Настоящий программист, какой он?
Неиссякаемый источник гениальных идей и мыслей - форум ДОУ подкинули очередную порцию для размышлений, а именно, какого программиста можно назвать настоящим?
Давайте разберемся.
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. Настоящий программист - это тот программист, который выбирает те технологии, среды, инструменты, которые максимально подходит поставленной задаче и больше всего соответствуют его знаниям.