Настоящий программист, какой он?

четверг, 3 декабря 2009, Александр Краковецкий

Неиссякаемый источник гениальных идей и мыслей - форум ДОУ подкинули очередную порцию для размышлений, а именно, какого программиста можно назвать настоящим?

Давайте разберемся.

Garbage Collector - для блондинок!

"Настоящий программист" должен выделять и очищать память только руками, писать указатели и (особенно!) указатели на указатели везде где это можно. Т.е. вместо того, чтобы сконцентрироваться на разработке, нужно высчитывать размеры буферов и писать деструкторы. Несомненно, достойное занятие для "настоящего программиста"!

Фреймворки и библиотеки - отстой!

Несомненно, все фреймворки и библиотеки написали индусы, а все, кто ими пользуется - трусы и недоучки. Ведь как это можно было использовать Drupal на официальном сайте восемнадцатой средней школы Бобруйска??? "Настоящий программист" должен писать все сам. Причем, после каждого законченного проекта форматировать диск и начинать все сначала.

Знания матана только для ботана! 

Перефразирую известного политика Егора Лупана: "Математику знать не нужно. Вот я не знаю - и ничего (с)". Так мыслят "настоящие программисты"!

О, мейнстрим!

Конечно, .NET, Java - отстой, как вообще на них можно писать? Только pure C под linux и обязательно потом в open source!!! Потом лезем на сайт (ЛОР, хабр, ДОУ - нужное подчеркнуть) и пишем:

полный майкрософт головного мозга.

или

Кстати под мою ОС нет ВизюялСтудии, меня вылечат и я еще смогу стать программистом или раз Балмер сказал в морг, значит в морг?

Конечно, так высказываются только "настоящие программисты"!

Т.е. вместо

var lineCount = File.ReadAllLines(@"C:\file.txt").Length;

нужно писать:

<code>#include <iostream><br />#include <fstream><br />#include <vector><br />#include <ctime><br />using namespace std;<br /><br />unsigned int FileRead( istream & is, vector <char> & buff ) {<br />    is.read( &buff[0], buff.size() );<br />    return is.gcount();<br />}<br /><br />unsigned int CountLines( const vector <char> & buff, int sz ) {<br />    int newlines = 0;<br />    const char * p = &buff[0];<br />    for ( int i = 0; i < sz; i++ ) {<br />        if ( p[i] == '\n' ) {<br />                newlines++;<br />        }<br />    }<br />    return newlines;<br />}<br /><br />int main( int argc, char * argv[] ) {<br />    time_t now = time(0);<br />    if ( argc == 1  ) {<br />        cout << "lines\n";<br />        ifstream ifs( "lines.dat" );<br />        int n = 0;<br />        string s;<br />        while( getline( ifs, s ) ) {<br />                n++;<br />        }<br />        cout << n << endl;<br />    }<br />    else {<br />        cout << "buffer\n";<br />        const int SZ = 1024 * 1024;<br />        std::vector <char> buff( SZ );<br />        ifstream ifs( "lines.dat" );<br />        int n = 0;<br />        while( int cc = FileRead( ifs, buff ) ) {<br />                n += CountLines( buff, cc );<br />        }<br />        cout << n << endl;<br />    }<br />    cout << time(0) - now << endl;<br />}<br /></code>

Ах, ну да, мы же о "настоящих программистах" говорим...

IDE IDE рознь

И вообще, интересно как я умудряюсь в Емаксе давать переменным вменяемые названия без несколько-гигабайтной ИДЕ?

Ну конечно, Visual Studio - это отстой, да еще и какой! Мало того, что жрет много памяти, занимает кучу места, а из функциональности - только изменение названий переменных. Да еще и платная. И не важно сколько раз вы скажете "настоящему программисту", что есть Express версии, программы типа DreamSpark и BizSpark - это все равно не поможет. По умолчанию.

Вот еще одно мнение по поводу изучения C# как первого языка:

Зачем сразу такая шара. Пусть на ассемблере сначала помучается, прочувствует так сказать "на чем деды писали". Потом покажем C, тот же ассемблер-на-стеройдах. Научим ловить меморилики и блудные указатели. Потом посвятим в C++, дадим Страуструпа (на год хватит). Когда сможет объяснить, что такое "выделение ресурса суть инициализация" и чем умный указатель отличается от ссылки, заставим прочитать бандитскую Design Patterns. И только после этого, разрешим ему садиться за .NET, как награду за испытания тяжкие.

Судя по всему, "настоящий программист" должен идти только таким путем, другим никак.

Итак, вывод, "настоящий программист":

  • сидит в linux, каждый день отлаживает исходники ядра, пишет программы в emacs и выкладывает их в open source
  • программирует только на python (в крайнем случае на С++) и в текстовом редакторе, компилирует только с командной строки
  • считает, что все джависты и дотнетчики - индусы
  • не делает никогда ошибок, считает, что их делают только индусы (читай - дотнетчики и джависты)
  • не думает о деньгах, о них думают только гнилые аутсорсеры, виндусятники и некоторые джависты
  • при каждом удобном случае показывают, какие они модные, гордо указывая свой ник - anonymous

И самое главное, что "настоящие программисты" в реальной жизни на поверку оказываются посредственными личностями, с маленькой зарплатой, жигулями вместо лексуса и полным отсутствием целей в жизни.

P.S. Настоящий программист - это тот программист, который выбирает те технологии, среды, инструменты, которые максимально подходит поставленной задаче и больше всего соответствуют его знаниям. 


Ищите нас в интернетах!

Комментарии

Свежие вакансии