Как стать автором
Обновить

Комментарии 78

Черт, хочу такого красного дьяволенка
супер спасибо за линк!
НЛО прилетело и опубликовало эту надпись здесь
Угу, например «Генерики никогда не будут рулить! Запомните мои слова»!
Да за такие слова нужно премировать чела метлой и вечным отпуском от шарпа ;-)
нужно просто понять в чем соль каждой доработки =)…
«там» ведь тоже не дурни сидят!
Ну а кому понравится, если ему надо будет обязательно изучить новую фичу? ( Не выучил — ты хуже других ) Оттого и недовольство.
Я, как решарповец, ненавижу var! Когда я пишу, скажем, «VeryLongClassName v», а потом нажимаю Ctrl-Shift-Space, R# сам додумывает имя переменной. А когда я пишу «var v», ничего не происходит. То же будет и с динамиком. Какое счастье, что у моего рабочего проекта в кодконвеншене прописан запрет на использование var-а ^_^
ага, надо было var после new добавить, тогда бы решарпер не тупил ;-)
а если серьезно, программа же компактнее стала!
Каждая новая фича языка увеличивает алфавит языка и, соответственно, увеличивает требования к срокам обучения. Но с другой стороны, правильное использование такой фичи делает программу короче и понятнее. Да, все мы консерваторы, но осознавая будущую пользу можно поднапрячься и получить бонусы, и не только в виде новых скилзов, но и в виде зарплаты ;-)
А вы что не вкурсе, что с каждым годом «стоимость» вхождения на рынок всё больше и больше?
Вы только представте, сколько сейчас нужно студенту выучить, что бы полноценным членом команды даже на маленьком проекте? Только потом и кровью за 5 лет обучения можно к 5 курсу выйти с хорошими знаниями. И при этом всё, что в ВУЗах читают только 5% из того, что абитуриенту понадобиться в работе.
Стоимость вхождения на рынок не только для разработчиков повышается. У био/генных инженеров аналогично. И еще много у кого. Первопричина — информационный взрыв.
Я в курсе про ВУЗы. Имею прямое отношение. Конечно, не 5%, значительно больше. Но с таким качеством, что доходит 1% от необходимого. Причем, от ВУЗов ждать улучшения маловероятно. Только если вдруг застой в отрасли случится, что невероятно. Если и дают что-то хорошее, то в отвязке от другого и очень узко.
Нужен концентрированный динамический учебный ресурс с фиксированным объемом (в часах его изучения), постоянно корректируемый сообществом разработчиков. Тогда к нему можно будет привязать программу ВУЗа.
Я поднимаю новичка где-то за две недели.

ХП еще никогда никто не отменял. Рулит лишь мозг и его способность адекватно разворачиваться в нужных условиях в нужную сторону, а этому могут хорошо научить только в ВУЗе.
>а этому могут хорошо научить только в ВУЗе.
нет правильных путей и истин.
я не про это. я про то, что если человек учится в вузе на технической специальности (реально учится, а не бьет баклуши), то прежде всего он учится думать и анализировать.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Они забыли, что в прошлом, нужно было ввести жесткий контроль памяти и многие другие операции, в которых погрязали как в трясине.


Ужасно, придумали какие-то языки, где машины контроллируют где я хочу освободить память! :)
НЛО прилетело и опубликовало эту надпись здесь
Совершенно нечитаемый.

Работа с WinAPI требует одного принципа программирования, COM — другого. Javascript использует третий. Если все это смешать — будет ужас.
НЛО прилетело и опубликовало эту надпись здесь
ВинАПИ предполагает процедурное программирование, и в чисто ООП (вариант: чисто функциональной) среде существовать в теперешнем виде не может. А вы говорите — парадигма ни при чем.
НЛО прилетело и опубликовало эту надпись здесь
В Javascript свой, достаточно своеобразный ООП. Можно конечно подогнать его под C, но лучше его просто понять :)
НЛО прилетело и опубликовало эту надпись здесь
Да, prototype-based языки позволяют при должном уровне знакомства с ними писать очень красивый и выразительный код.
Не надо грязи. Некрасивый код вина не языка, а программистов, которые на нем пишут. Посмотрите, например библиотеку Qt, там все весьма читабельно и на C++.

А вот такие языки как PHP несут угрозу, так как после них народ тупеет и уже на C++ программировать не могут.
НЛО прилетело и опубликовало эту надпись здесь
Когда чуть-чуть повзрослеете, посмотрите исходники вашего любимого PHP. Там очень много куда более брутального кода на C. И в конечном итоге всё всегда сводится к очень, очень брутальному коду, да ещё и со вставками на ассемблере для оптимизациипод конкретные архитектуры. А наверху разработчик видит только удобный интерфейс библиотеки STL. И структурирована и унифицирована она, кстати, намного лучше, чем стандартные функции PHP.
НЛО прилетело и опубликовало эту надпись здесь
Чтобы иметь возможность написать в пхп
$a = my_cool_function(), где my_cool_function — функция, реализующая большие сложные вычисления, я должен либо написать эту функцию на php, и выполняться она будет часами, либо написать большой php-модуль на С, где будет дофига кода, а также вот такие строки:
PHP_FUNCTION( my_cool_function ) {
char *word = NULL;
int argc = ZEND_NUM_ARGS();
int word_len;
if ( zend_parse_parameters( argc TSRMLS_CC, "s", &word, &word_len ) == FAILURE ) {
return;
}
char* tmp = myInnerObject.myInnerCoolFunction( word );
if ( tmp == NULL ) {
RETURN_STRING( word, "FALSE" );
} else {
RETURN_STRING( tmp, "FALSE" );
}
}
}

И это, заметьте, всего лишь обертка для одной маленькой функции с одним строковым параметром. Вся реализация тут еще не видна.
Чтобы добавить готовую функцию в C/C++, мне надо написать одну строку. И пишите сами движок для расчёта квантово-химических моделей на PHP и Javascript. Можете еще на питоне написать.
НЛО прилетело и опубликовало эту надпись здесь
Спешит и падает. Именно поэтому PHP-программистам на хабре предлагают в среднем 20-40 тыс. рублей.
Ценность программистов-плюсовщиков начинается от 70 килорублей.
Когда люди пишут на плюсах, им важно качество кода, а не скорость его написания. Гугл использует питон для вспомогательных целей, но все его сервисы написаны на плюсах. Всяческий энтерпрайз пишут на статически типизированных яве и шарпе, а не этих ваших питонах. И хоть тресните, но для действительно важного кода нормальный программист предпочтет нормальный предсказуемый язык, а не php-питон.
Вы так же неправильно мыслите. В php порог входа ниже, следовательно цены за труд начинается с меньшей суммы, чем у с++. Но и в С++ есть новички, которым платят те же 20k.
В нормальной конторе, важно любое качество кода, на любом языке.
Ну вы сравните диапазон зарплат, да? Я не спорю, есть PHP-программисты, получающие 150к, но, как правило, это люди, способные и модуль для PHP на С написать, и пресловутый движок для моделирования молекул средствами чистого PHP сделать.
Для плюсовых программистов такую зарплату получить всё-таки намного проще, достаточно быть не гуру, а просто хорошим программистом, а 20к получать будет какой-нибудь junior developer-стажёр.
НЛО прилетело и опубликовало эту надпись здесь
Perl программистов очень, очень ищут. Программисты на перле до кризиса (не знаю, как сейчас) стоили 3-5k USD.
И казалось бы высокий спрос на PHP-программистов должен повышать их стоимость, да? Именно про это говорит рыночная экономика. Только у PHP-программистов гораздо бОльшую роль играет предложение, потому что чтобы PHP-программистом стать — много знать не надо, и соответственно высокое предложение роняет стоимость ниже плинтуса. А заодно и качество резко падает, благодаря доморощенным фрилансерам, изучившим книжку «PHP за 24 часа».
А еще PHP нигде, кроме как в вебдеве не используется.

Динамическая типизация — это и есть пример непредсказуемого поведения языка. Простейший пример: без справочника и личного опыта хрен вы определите, переменная какого типа лежит у вас в $_GET['a'] после обращения к сайту с указанием ?a=3
НЛО прилетело и опубликовало эту надпись здесь
Development team lead
Parallels
до 150 000 руб.
Обязательные требования:
* отличное знание perl, mod_perl;
* опыт программирования на Perl не менее 3х лет;

Программист Perl
RuTube
от 50 000 до 70 000 руб.
Требования:
* Со знанием Perl,MySQL и опытом работы над крупными веб-проектами не менее 2 лет

Разработчик Perl (Unix)
Web Interactive World
от 65 000 руб.
Требования:
* Знание Perl, Mod Perl, ООП, Template Toolkit,MySQL

Нормальный руководитель как правило хочет получить сайт. И естественно он предпочтёт нанять php-программиста, потому что дешевле всего, т.к. их много, а особых требований не предъявляется.
Как только от сервиса начинает требоваться высокая производительность, начинаются пляски с nginx-memcached-eaccelerator. А все важные места переписываются на компилируемых статических языках, ага.

Именно так. «Лежит число либо лежит строка». Вы можете это предсказать без справочника и без проверки функциями is_somewhat()? Нет, не можете. А если вы, упаси небо, передадите ?a=false и решите использовать её как bool, то вас ждёт страшное открытие, что в $_GET таки всё передаётся в виде строк, и ваш «false» внезапно приведётся в булевое true. Про другие не менее интересные открытия, типа intval(«3e+2»), даже рассказывать не буду.
Да даже в asp.net, Request.QueryString[«key»] возвращает всегда string.
И это, чёрт побери, явно прописано. А при попытке его заиспользовать как int, вас, насколько я помню, пошлют далеко и надолго, в то время как System.Convert.ToInt32 подробно указывает вам, переменной какого типа стал ваш ключ.
Только у PHP-программистов гораздо бОльшую роль играет предложение, потому что чтобы PHP-программистом стать — много знать не надо, и соответственно высокое предложение роняет стоимость ниже плинтуса.


Не программистом, а стажёром :) К рынку настоящих PHP-программистов это имеет мало отношения :)
На настоящих программистов спрос небольшой. Как правило, требуется «самый лучший программист» (это цитата из какой-то вакансии на хабре), который за 25000р. должен допиливать движок интернет-магазина/форума, писать на сайт js-скрипты и верстать дизайн.
Вы же и сами понимаете что я говорю как раз не об этом :) Таким людям требуются как раз стажёры или начинающие программисты, просто они этого не понимают.
Ну а рынок настоящих PHP-программистов с нормальными задачами, как я уже написал, довольно небольшой, и особого спроса на них я не вижу.
>>Тебе такой рыночный закон не известен?

Не аргумент. Насколько известно, один человек получил нобелевку недавно за то, что доказал, что закон рынка на самом деле не действует, или имеет малый приоритет :)

>> Мне неизвестен такой термин как предсказуемый язык программирования.

А еще, мне помнится, вы утверждали, что у вас коннект к базе может пропасть, только если базу «взорвут террористы», поэтому такой случай и предусматривать не надо.

Вы путаете теплое с мягким. То, что 95% написанного вами кода — скрипты на пехапе, которые исполняются, отдавая свой результат забвению, совершенно не означает, что не существует mission-critical приложений, от результатов корректной работы которых зависит очень многое.

>> Это именно тот случай, когда важна скорость работы приложения.
На проектах масштабов кластеров выбор языка не решает производительность. Hadoop вон на java написан, а twitter — на ruby, и что, он медленный? В таких размерах решающее значение имеют другие параметры, по которым php не подходит — стабильность, предсказуемость, надежность. Кстати, тот же twitter планируют переписать на scala (jvm) — стабильная олдовая платформа и статическая типизация.
Не аргумент. Насколько известно, один человек получил нобелевку недавно за то, что доказал, что закон рынка на самом деле не действует, или имеет малый приоритет :)


Если вы про «Рынок лимонов», то я бы посоветовал всё таки прочитать работу, прежде чем писать :)
Программирование это лишь решение некоей задачи.
А языки это просто инструменты.
Выбор инструмента зависит от задачи (её типа, масштабов) так и предпочтений работников.

Но кричать что «C++» дерьмо, «PHP» рулит — это или детство или глупость.
Есть задачи где рулит C++, еть где PHP, где-то ассемблер, где-то лисп (сколько существуют конфы прогграмисткие столько это и пытаются обьяснить отдельным горячим личностям, и столько же эти личности вновь появляются).
И вещи это не взаимозаменяемые.

Лучше думать, а потом писать…
то то динамические языки придумывают себе всякие прекомпиляции скриптов. И РНР и яваскрипт и питон… Какое-то странное у них будущее, динамически компилируемое.
И давайте не равнять новояз и мастодонтов. Вы попрограмируйте на c#, а потом перейдите на яваскрипт =) знаете, ощущение что как руки отрезали, по самую шею — «так не получается», «тут все руками писать», «дженериков нету, Query comprehension даже не предвидится»…
> И давайте не равнять новояз и мастодонтов. Вы попрограмируйте на c#, а потом перейдите на яваскрипт =)

Да-да, попробуйте попрограммировать на питоне, а потом перейдите на c#. Того нет, этого нет, того не умеет, библиотек не хватает… ;-)
каких библиотек не хватает в шарпе?
мы тут как-то с товарищем «мерялись пиписьками» Джанго против Энтити фреймворка. Последнее что я услышал — ну а это нормальный человек делать не будет, у нас нету и не надо. Т.е. выяснилось что технически ЕФ как минимум не хуже Джанго, а с LINQ2EF — и превосходит по читабельности.
Думаю что если начать меряться с питоном, то единственное в чем питон выиграет серьезно — это возможность метапрограммирования и метаданные. Но по многим статьям у него только джентельменские соглашения а никак не строгий контроль. Язык хороший, сам все никак за него не засяду, очень нравится.

Но поверьте, вы просто слабо представляете себе мощь шарпа, если такое говорите…
Вообще это была больше шутка, чем серьёзный комментарий :) А шарп конечно не джава, он всё-таки почеловечнее — может и библиотеки нормальные есть :-)
Чего это нет в шарпе, что есть в питоне?
то что за 10 секунд придумалось — metaclasses, list comprehensions, generator expressions, keyword arguments
НЛО прилетело и опубликовало эту надпись здесь
Эти самые «дурацкие шаблоны» в C++ позволяют использовать парадигму обобщенного программирования.
НЛО прилетело и опубликовало эту надпись здесь
Статические != дурацкие типы данных и тонны кода. Попробуйте Nemerle или Scala (или F#), и поймете о чем я.
Haskell туда же естественно :)
Тогда мы потеряем преимущества статического анализа. Для того чтобы анализировать динамический код нужно никак не меньше чем самый настоящий искусственный интеллект.
На картинке маленький bsdенышь
Люди ленивы по своей сути, и с каждым годом становятся ленивее.
Пока был молод, выучил набор фич и затормозился на этом уровне.
А тут пришли молодые, и подпёрли — кто тут будет доволен в такой ситуации?

Сам порой размышляю — «придумывают тут, зачем оно надо?».
А потом понимаю, что это всё от лени — не нравится не используй, строгай код по старинке.
Если тебе не надо, это не значит что другим тоже нет в этом необходимости.

К счастью ворчуны ворчат, а их оппоненты берут и делают, иначе б сидели в каменном веке и высекали огонь камень об камень.
А некоторых «колбасит» даже от технологий. Помню, когда то ненавидел AJAX.
А я и сейчас скрежещу зубами, открывая еженощные тесты Dojo чтобы понять как же оно работает если вообще работает ;)
Приведу контраргументы:

1. Поодержка старого кода и API. Generics в Java появились недавно. До сих пор много библиотек их не используют, рискуя потерять совместимость. Например тот же Swing. Имплементируя новую фичу нужно думать о совместимости со старой.

2. Новая фича предлагает новый прием программирования. Однако раньше та же функциональность прекрасно делалась стандартными средствами. В итоге мы имеем несколько альтернативных способов написать одно и то же, а это не есть хорошо.

3. Фичи, которые ослабляют синтаксический контроль языка в угоду быстроты разработки портят его изначальную идею. Выбирайте язык соответвующий потребностям, а не универсальную кашу на все случаи жизни.

4. Обилие фич как правило портит стиль написания и приводит к потере унифицированности. Прежде чем начать командный проект, приходится все больше читать доки по принятому у в команде стилю и гайдлайнз.
1. Поймал себя на мысли, что всё что я изучал многократно дублировалось, только на разной основе. Но ведь это и есть развитие по спирали, разве нет? А гонка за обратной совместимость гарантировано ведет в тупик. Иногда нужно делать эволюционные скачки, чтобы сбросить весь накопившийся бред. Например, MS сделали C#! Даже где-то была исповедь от разработчиков, типа всё что было до шапра — фигня.
2. Инжекторный двигатель тоже нужно делать отличным от карбюраторного. Но ведь он экономичнее! Так же и с кодом: новые фичи позволяют более элегантно всё обобщить, оформить.
3. Вы конечно правы, но не язык тут виноват, а кодер и тот кто его учил. Пальцы в розетку тоже нельзя пихать или подключенный к розетке ноут брать в ванную :), но это все знают (надеюсь :).
4. Опять же, не язык, а кодер виноват в этом. Вы видели, чтобы мебельщики например жаловались, что можно и так и сяк сделать, и красный с зеленым намешать…
2. Новые фичи могут не только добавлять элегантности коду, но и повышать производительность. Например rvalue references в C++0x ;)
1. К сожалению, шарпы подходят далеко не для Всего.
Слушайте, ну молотком тоже можно людей убивать, но это не значит что молотки надо запретить или не совершенствовать.

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

Опять же по поводу стиля — если человек пишет синтаксическую кашу — такая же каша у него и в голове — он не понимает для чего используется та или иная фича. А это обычно ведет к тому, что проблема синтаксического оформления — самая маленькая проблема с кодом этого человека, там и архитектура — «как оформление», и ооп тоже в ту же степь катится. Поэтому применяем наш любимый рефакторинг — Throw-All-Rewrite.

Пожалуйста не считайте себя умнее тех людей, которые пишут ЯП, они совсем не дураки и вводят фичи не с потолка.
Статья хорошая, но не могу не поныть :). Почему примеры только на таких попсовых языках, как C# и PHP? Где революция синтаксиса Python 3, когда код для версии 2.5 перестал компилироваться? Почему svn? Автор, пора уже давно перейти на git/hg/bazaar. :)
Видимо потому, что автор статьи Senior Program Manager at Microsoft on the ASP.NET team, currently working on the new ASP.NET MVC Framework. ;)
Сорри, не заметил, что перевод. Но собственно ситуации не меняет :).
Не стоит забывать, что есть субъективные, но очень важные параметры, которые влияют на восприятие инструмента его пользователями — одни реализации кажутся избыточными или бедными, другие — «необходимыми и достаточными», какие-то идеи словно витают в воздухе, а некоторые — притянуты за уши. Иногда даже рациональный, эффективный код выглядит так, что хочется спросить его «ну что за горе-человек без вкуса и без чувства прекрасного написал тебя? Зачем этот цирк с конями?». А другой, ничем на первый взгляд не выдающийся, оказывается потом вещью в себе, как стихотворение — ни слова не добавить и не убавить.

Простыми словами — этот ваш C# всем хорош, но он дебиловатый какой-то. Вся эта феерия «нового функционала» ничего ровным счетом не добавляет, просто кодерам низшего уровня предоставляется еще одна возможнсоть сделать мир немного уродливее.
Говорить на язык «дебильноватый» не корректно. Каждый имеет свои особенности, иначе если пройтись по Java или AS, с вашей точки зрения, можно тоже назвать их сумасшедшими и т.п.
Отличная статья. Респект)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории