Pull to refresh

Comments 115

UFO just landed and posted this here
>Мы любим язык, если тип мышления разработчиков языка совпадает с нашим.
крайне фиговая тенденция, хотя и отражает суть.
на практике она обозначает что "мы любим языки которые не заставляют нас учиться", а лень это не только двигатель прогресса, это еще и благодатная почва для дегенерации %(
Когда мне говорят, что "лень - двигатель прогресса", я отвечаю следующее...

Лень потребителей - двигатель прогресса творческих людей. Тех, кто реально влияют на прогресс, трудно назвать ленивыми :)
ай, не скажите. очень часто потребитель и производитель софта по началу совпадают. и многие полезные разработки родились только потому, что автору надоело делать 5 движений вместо одного.

>Тех, кто реально влияют на прогресс, трудно назвать ленивыми :)
сложно спорить, но мне кажется что в основе любого процесса обычно лежит извечное желание человек ничего не делать и при этом что-то иметь :) «write once use anywhere» и т.д. есть дети здоровой лени :)
Да, это уже философский вопрос :)

"надоело делать 5 движений" - это не лень, а раздражение или возмущение - эмоции, присущие нападающим, а не убегающим.

Лень - нечто другое. Психология, например, разделяет понятие лени и творчества. Лень лежит в одной плоскости с апатией и чаще всего является (грубо говоря) следствием "мне всё надоело, оставьте меня в покое".

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

***

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

ps.
По моему опыту, поговоркой "лень - двигатель прогресса" в основном пользуются ленивые (да и то, только для поднятия самооценки). Если я создал новый продукт (сайт, например), то мною двигало желание (самореализоваться, возмущения текущим положением или другое), но никак не лень.
ну и ладно. убедили :)
поскольку в целом я с вами согласен, будем считать что я просто не правильно трактую термин "лень".
... делать культ из молотка.
Это также в равной степени относится и к выбору ОС, IM и т.д. К сожалению это еще менее очевидно.
спасибо за книгу :)
нашел ее здесь, правда появится она только 1-го июля да и то маловероятно...
Книга есть еще на books.ru (дешевле, чем на Озоне даже с моей 10% скидкой).

Эта книга одна из немногих дельных книг. Стиль изложения автора и перевод превосходный :)
UFO just landed and posted this here
на Ruby можно писать и без рельсов, на рельсах без Ruby не получится...
но вот ведь парадокс, большинство преимуществ приписываемых Ruby на самом деле являются преимуществами рельс. собственно об этом и речь :)
UFO just landed and posted this here
без руби рельс бы небыло вообще, но все таки голый язык и фреймворк для этого языка «суть две большие разницы».
Почему нельзя сравнивать языки? Подвергается сравнению практически все, чем же языки программирования заслужили себе такую привилегию? Сравнивать нужно, сравнение вскрывает все плюсы и минусы!

Глупо не "сравнивать php и perl", глупо учить других, что для них должно быть "совершенно лишено смысла".

Как протекает "языковой" спор? Каждый высказывает плюсы своего языка и предполагаемые минусы языка оппонента. Неужели вся эта информация тоже лишена смысла?
Любой язык программирования ставит не барьер, а просто задачу для вас. То, что вы воспринимаете, как недостатки и ограничения - это повод задуматься - а с использованием ли языка вы программируете?

Информация о плюсах и минусах хороша, спору нет. Но вот спорить о языках - незачем.
Сравнение не есть спор!!!

Спор лишен смысла только тогда, когда его целью является навязывание.

Не язык программирования ставит задачу, он всего лишь является инструментом для ее осуществления.
Если язык будет ставить мне задачи, тогда или я его (языка) автор, или только его начал изучать.
Это было сказано о так называемых недостатках языка, которые являются барьерами для тех, кто пишет на языке.
Мне недостатки языка и их дополнительными задачами не нужны, для меня главнее всего основная задача!

Нужно знать недостатки языков и использовать именно тот, у которого в данном конкретном месте применения их (недостатков) меньше всего.

По топику видно, вы пишете в основном на ПХП...

З.Ы. Подтверждение своих слов словами чужими, пусть даже печатными, не может быть служить аргументом.
Пишу я на пхп, да. Он мне нравится. Хотя, также мне нравятся высокоуровневые языки вроде ruby и python. Я очень люблю smalltalk, и достаточно часто тренируюсь в написании на нём основной архитектуры, чтобы увидеть недостатки. Также есть неплохой опыт использования C# и C++.

Опять же, как и человеку ниже, скажу - прочтите книгу.

Выбор инструмента для реализации проекта - это действительно важно. И хорошо, что вы это понимаете. Но вот после того, как инструмент выбран, вряд ли кто-то позволит вам его менять, поэтому возникающие трудности придётся разрешать именно с использованием данного инструмента.
Теряю вашу нить. Безусловно, трудности придется решать с использованием данного инструмента. Безусловно, если уж вам не повезло писать на PHP - вам придется преодолевать его проблемы. Как из этого вытекает, что не стоит рекомендовать на форумах выбрать иной язык для реализации проекта? Как из этого следует, что язык не является важным аспектом всего процесса реализации?
не стоит рекомендовать на форумах выбрать иной язык для реализации проекта

Я это сказал? Или вы?
Как из этого следует, что язык не является важным аспектом всего процесса реализации

Он важен на этапе выбора инструмента. После выбора важность приобретают программист и его умения.
насколько я понимаю, у нас тут весь разговор о том - имеет ли смысл обсуждать недостатки языков программирования и спорить о них. Если я не ошибаюсь, ваш message был в том, что "не имеет". Думаю, цитаты найти не сложно.

Так что?

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

Если же мы сидим на форумах и тратим свою жизнь в поисках истины - разговоры о ЯП очень даже полезны.

Я скажем, считаю своей заслугой каждого "пэхэпэ-программиста", которому открыл глаза на то, что есть другой, лучший мир. Мир настоящих языков, а не поделок. Мир настоящих фреймворков, а не zend framework.
Мой message, как вы выражаетесь был заключён в том, что стоит прочитать книгу и ещё в одной выделенной жирным шрифтом мысли.

Считайте своей заслугой что угодно. Но мои глаза и без вас широко открыты и я прекрасно вижу другие миры. А вот вы сидите в своём и пытаетесь открыть мои открытые глаза. Печально.
Ну что вы как ребенок? Вы написали пост на три страницы. А теперь сводите его к тому, что только хотели сказать "люди, прочитайте вон ту книжку, а еще: надо программировать с помощью языка, а не на нем".

Я не пытаюсь открыть вам глаза. Ясно, что вы достаточно квалифицированный программист и прекрасно во всем разбираетесь без меня. Речь идет, если хотите, о поведении в тусовке. Стоит ли спорить о ЯП. Вы заявили - не стоит. Я стараюсь опровегнуть этот тезис, потому что считаю его не разумным. Вы не отвечаете на мои вопросы по теме.

И что это?
Давайте так.
Стоит дискутировать во время выбора инструмента, после - смысла мало.
бесспорно. теперь идем в начало.

Вы определили две категории дискуссий:
а) до выбора инструмента
б) после

как вы думаете, к какой категории преимущественно относятся споры на той же хабре "кто круче перл или php"?

Я думаю, довольно очевидно - к первой, так как они имеют теоретический формат и призваны оценить абстрактные преимущества и недостатки языков без привязки к конкретному проекту.

Так о чем мы говорим?
Большинство таких дискуссий касаются только синтаксического сахара и скорости интерпретатора / сопутствующих модулей.

Поэтому это дискуссии о чём угодно, но не о языках.
и вы меня опять возвращаете к необходимости привести конкретный пример.

в PHP нет человеческой поддержки Unicode. Это заслуживает обсуждения? Это дискуссия о языке?

Или что вы вкладываете в понятие "язык". Недавно мы замечательно говорили о нем как об "инструменте". Теперь это что-то иное?
Проблема unicode решаема, не так ли? И недостатки решений, по-моему, тоже известны.

Поэтому обсуждать поддержку unicode - бессмысленно. Надо просто знать проблему и решение.
Если то, что я ответил в первом комментарии к этому вашему, каким-то образом непонятно - вы скажите, я статью подредактирую.
Опять же, как и человеку ниже, скажу - прочтите книгу.

Вы знаете, я привык иметь свое мнение, пусть даже оно идет вразрез с чьим-то печатным. "Прочитать книгу" - не аргументация, если вы подразумеваете ведение любого спора таким образом, то он изначально бессмысленен.
Это не аргументация, а призыв к действию. Если вы найдёте эту книгу хорошей, в чём я, лично, не сомневаюсь, то замечательно.

Своё мнение - тоже прекрасно, но разговор о мыслях из книги, которую вы не читали не имеет смысла.
Я не понял, в топике стоит ваша подпись, а по всем затруднительным вопросам вы отправляете к автору. Так и было задумано?

По моему разумению, если принял чью-то идею, то должен сам ее отстаивать, без помощи автора. В противном случае это выглядит как ее (идеи) непонимание.
Я скажу ещё раз, а вы прочитайте.

Мысль изложена, выделена жирным. Это раз.

Я всё отстаиваю сам, вы заметили? Это два.

Я подтвердил вашу мысль о том, что важно знать недостатки перед выбором инструмента, но говорить о задачах возникающих после выбора инструмента в стиле «Мне недостатки языка и их дополнительными задачами не нужны» - это чушь.

Также, рекомендую почитать разговор с neoromantic.
Я всё отстаиваю сам, вы заметили?
Не заметил, вы меня успели к автору "послать", и не только меня одного.

Какой выбор инструмента? Я разве говорил, на каком этапе и что нужно выбирать? Давайте почитаем заново...
Не язык программирования ставит задачу, он всего лишь является инструментом для ее осуществления.

и еще
Нужно знать недостатки языков и использовать именно тот, у которого в данном конкретном месте применения их (недостатков) меньше всего.

А это высказывание:
Мне недостатки языка и их дополнительными задачами не нужны, для меня главнее всего основная задача!
будет "чушью" только тогда, когда от языка мне будут нужны только трудности.

P.S.Подменять понятия неприлично...
Выбирать нужно в начале, не так ли?.

И снова вы продолжаете разговаривать с воображаемым собеседником.
jahson
Выбирать нужно в начале, не так ли?
Вы думаете, это с моими словами никак не вяжется?

И снова вы продолжаете разговаривать с воображаемым собеседником
Это что, такая методика ухода из затруднительного положения?

Если бы вы корректировали статью до публикации, а не после обсуждения, никаких споров бы и не было. Будьте внимательней, уважайте своих посетителей.
Я очень благодарен вам и остальным людям, что обсуждение есть и оно позволяет улучшить статью.

Но я против пустых споров, особенно когда я отвечаю вам, а вы больше смотрите на свои комментарии, чем на мои ответы.
В том-то и дело, что большинство споров как раз о плюсах и минусах языков. Другое дело, что некоторые спорщики в споре опираются не на аргументы, а на свою личную точку зрения, возведенную в ранг аксиомы, - вот такие "споры" действительно не нужны.
В вашем посте неявно утверждается некая странная вещь: "все языки программирование имеют право на существование, все языки программирования хороши, и совсем неважно на чем писать". Что, очевидно, - глупость.

Встает задача писать веб-приложение? PHP - дрянь, Python - чудо.

Встает задача писать логику? Что нужно выбрать - Pascal или Lua/Python/Smalltalk?

Встает задача писать 3d движок? Что нужно выбрать - C или Java?

Пишете приложение под мак? Что выбрать - Objective C или C++?

Ответы очевидны. И я здесь не хочу сказать либеральное "каждому языку - свою задачу". Есть языки, которые отслужили свое и сейчас не представляют собой ничего, кроме устаревшей кучи мусора.

И это важно. Важно - не прививать уродство PHP. Язык во многом определяет программиста и программу.
Согласен с тем, что каждому языку, действительно, свою задачу. И я утверждал лишь, что спор о преимуществах одного над другим - пустое.

Но вот уродство - вещь субъективная. Я могу писать хороший код и на php и на python, потому что главное - это программист. Язык вторичен.
Некоторые вещи вы на PHP эффективно не напишете.

Некоторые вещи написать эффективно на PHP можно, но они не будут эффективно исполняться, потому что, скажем, Python - быстрее.

Язык не вторичен. Он просто менее важен, чем программист. Сильно менее важен. Но от этого он не становится незначительным.
Опишите ваше понятие эффективности. Я, лично, понимаю это так: «Эффективно - это максимально эффективно с использованием данного языка».

Утверждения о быстроте касаются не языка, а совершенно другой темы. Утверждения о быстроте приводят к разговору о opcode-кэшах и разнообразных способах ускорения.
"эффективно" это максимально быстро и "красиво" из всего возможного.

Некоторые вещи на PHP быстро не пишутся. Некоторые вещи на PHP не пишутся красиво. В частности - многое, связанное с работой с UTF. Это объективный недостаток языка. Программист тут не при чем. Программисту приходится переодически материться и завидовать питонщикам.

Многие стандартные для веба задачи на PHP решаются в разы медленнее и в разы уродливее, чем на Python.

Это ли не причина поднимать вопрос о непригодности PHP к эффективной разработке?
Ясно. Вам неугоден php. Ваше право.
Вы, главное, заметьте наконец, что статья не про php, она про более общие вещи.

Всего самого наилучшего.
Неугоден. Но разговор действительно о более общих вещах. Но общие вещи обсуждаются на частных примерах - иначе невозможно. Пример PHP не подходит под это общее правило?

Как абстрактная фраза "не нужно экономить на спичках и выяснять что лучше begin/end или фигурные скобки" - все это философствование очевидно и бесспорно.

А вот как конкретные заявления, что все языки хороши и что язык по сравнению с программистом незначителен - это уже не имеет никакого смысла. Не хороши, и значителен.

Не хотите про PHP - поговорим про Кобол. Или про Borland Pascal 3.0. Дерьмовые языки, что тут говорить.
на момент их создания между прочим, одни из лучших :)
А если так говорить, то вынужден заявить вам, что многие вещи в любом языке решаются уродски:)
Этого контраргумента более чем достаточно, чтобы вам заявить что программирование заглучается именно в алгоритмизации. Решение проблемы лежит в голове программиста, не важно на чем его писать, существующая база языков позволяет выбрать любой и на следующий писать проф. приложение. Главное - мозг
В плане написания веб-приложения - у меня такое ощущение, что вы пишете на python, а точнее даже на одном из фрэймворков. С утверждениями «php - дрянь, python - чудо» вы рискуете не увидеть за деревьями леса, потому как язык всё-таки вторичен.

lua/python/smalltalk - как-то smalltalk выбивается из общего ряда, не находите?

И да, покажите пожалуйста, где «неявно утверждается«, я исправлю, чтобы не было кривотолков.
1) Я пишу на многом. Да, я люблю питон. И я люблю фреймворки. Но язык играет роль в конкретных местах. Язык неважен для глобальной архитектуры, но когда вам нужно написать какое-то конкретное место - он становится определяющим. И вот тут и вступают в игру мощности Python, Ruby или Lisp. И вот тут PHP-программисты начинают материться.

2) Ну выбивается. Главное, чему оно противопоставляется. Да и почему выбивается? Smalltalk замечательная вещь чтобы писать domain logic.

3) Вы хотите сказать - явно утверждается? :) Кривотолков, я так понимаю, нет. Если я не ошибаюсь - я правильно уловил смысл вашей публикации?
Прочитайте книгу, а потом мы поговорим. Если же вы хотите в очередной раз поговорить о том, что php - уродлив, а python- прекрасен, разговор не состоится, потому как он напоминает мне разговор о синтаксическом сахаре, который мощью является вряд ли.

1. Конкретные места - это лишь ещё одна задача. И если вы её решили на языке, на котором пишете, а не на том, на котором она решается просто - то честь вам и хвала.

2. smalltalk замечательно подходит для быстрого написания прототипов. А бизнес-логику можно описывать на всём, она прекрасно описывается даже на бумаге.

3. Я хочу сказать, что вы ошиблись, предположив, что я утверждаю «все языки программирование имеют право на существование, все языки программирования хороши, и совсем неважно на чем писать». Я согласен с частью «все языки программирование имеют право на существование, все языки программирования хороши», потому что реальная жизнь заставляет писать на разных языках и в таком случае программирование с использованием языка - очень полезный навык.
Я не понимаю где нарушается элементарная логика.

Вы пишете, что "сравнения языков одной области - бессмысленны для тех, кто программирует с использованием языка".

Факт - все языки программирования чем-то отличаются.
Факт - эти отличия поддаются оценке. Какие-то бесспорной, какие-то более сложной, но поддаются.
Следствие - языки можно и нужно сравнивать. Потому что один лучше другого.

Если же вы хотите сказать, что несмотря на то, что один язык "лучше" другого, это не важно, потому что важен только программист - повторю: python объективно быстрее php. Они находятся в одной области применения. Что должен сделать программист?
Ответ: Если инструмент уже выбран - делайте на нём. Если же он ещё выбирается - выбирайте более удобный. Если программист нормальный - то в самом начале он выбирает более подходящий для задачи язык. Либо это делают за него.

Сравнивать языки, когда ты пишешь проект на одном языке, а другой человек пишет прокет на другом языке - бессмысленно.

Что ж вас так пхп-то зацепил, я ведь написал не о нём вовсе, а скорее о способе думать.
Вообще, очевидно, что вы писали на пхп, а теперь пишете на питоне. Значит вы сделали свой выбор, значит для ваших задач он более удобен. Пользуйтесь на здоровье, вот только фанатизм - это плохо.

И снова, всего самого наилучшего.
jahson, а если барьером языка станет скорость выполнения? Каким образом в рамках данного языка вы сможете этот барьер обойти?
Во-первых. Скорость выполнения - это барьер не языка, а скорее его интерпретатора. Да и не барьер, а снова задача.

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

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

Была у ATI catalyst center - написанная на .NET. Была страшной, глючной, тормозной. Переписали на C++. Стала хорошей.

Понятно, что не язык виноват. Понятно, что программеры не сдюжили написать хорошо на .NET. Да только факт не меняется.

Почему некоторые части кода мне при разработке пришлось вынести во внешний модуль на чистом C (некоторые текстовые фильтры, которые работают очень много и часто)? Потому что на PHP они тормозили. Потому что bottleneck. С кешами опкода, с быстрыми серверами и с хорошей вылизанностью архитектуры. А вот на C - летают. Ибо вылизано вплоть до byte alignment.
Опять же, вы смешали пхп и оптимизацию скорости выполнения. О чём тут говорить.

Я же говорю - перестаньте открывать мои открытые глаза.
что я смешал? У меня была задача. У меня была даже ее реализация на PHP. Идеально оптимизированная. С помощью PHP улучшить было невозможно. Мне пришлось воспользоваться другой технологией и она мне помогла. Это недостаток PHP. О нем необходимо знать. О нем необходимо кричать! Дабы newbie, который решает на что ему потратить пару лет своей жизни сделал правильный выбор.
Кричите на форуме о php, кричите с аргументами, убеждением и жаркими спорами.

Мне, пожалуйста, не надо говорить о идеальной оптимизации, и о том что воспользовались другой технологией. Мы прекрасно все знаем, что оптимизация тонких мест зачастую приводит к использованию других технологий. Но оптимизация тонких мест - это удел опытных. И то что встретилось вам, не обязательно встретится тому самому новичку, поэтому ему надо сказать, что в таком-то и таком-то случае можно сделать так-то и так-то. И всё.
Это сродни тому, как тонкие места программ на си переписывают на ассемблере, заглядывая при этом почаще в Кнута и Вирта.
А если на assembler сможете переписать, то C++ тоже плохим окажется? :)
Извиняюсь, что продублировал предыдущий комментарий
И вы, как программист начнете ставить на сервере fastcgi (который обычно поставлен), искать быстрый сервер... А может начнете свои рассуждения с апгрэйда железа хостера или прибегнете к переезду на выделенный сервер?

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

Важно сосредоточиться на проектах, а не на технологиях.

Когда будет время, тогда и переходить на новый язык, но ежемесячно, только в погони за новинкой.
А пример можно? Как узнать, на языке я пишу или с использованием? Из текста топика непонятно что значит писать с использованием языка...
Писать с использованием языка - значит перестать ограничивать себя возможностями языка. Например, если в языке нет namespace, надо сделать так, чтобы цель, ради которой существуют namespace, выполнялась без них - написать соглашения по именованию, учесть этот момент в архитектуре и т.п.

Я тебе книгу дал? Дал ;) Глава 34.
Я считаю, что программирование - это стиль мышления, и без разницы в каком языке этот стиль реализуется.
Это правильно. Только не "программирование - стиль мышления", а "Хорошее программирование - это стиль".
Я говорю не про стиль программирования, а про стиль мышления. Человек, со "стилем мышления" программиста, как раз пишет "с использованием языков", т.е. для него язык программирования как бы вторичен, и зависит от конкретного применения и пристрастия.
Надо было мне написать - «Хорошее программирование - это стильно» ;)

Также, хороший программист пишет прежде всего для людей, что уже подразумевает хороший стиль написания. А хороший стиль мышления неразрывно связан с хорошим стилем изложения.
Да, много хорошего слышал про книгу - надо бы прочитать. А сейчас читаю не менее культовую "Pragmatic Programmer" Дэйва Томаса и Энди Ханта.

Кстати, насчёт Ruby/Rails - лично меня совершенно восхищает Ruby как язык, мне невероятно нравится на нём программировать - при этом за рельсы я всерьёз до сих пор не взялся за полтора года знакомства с Ruby - пока что не так интересно. :)

А еще меня восхищает как язык JavaScript (отбросив все стереотипы).

В общем я думаю, что великолепные результаты получаются у программиста в том случае, если ему нравится процесс, если есть настоящее увлечение и энтузиазм, - а это зависит от его вкусов в гораздо большей мере, чем самих языков.
Pragmatic Programmer у меня в очереди стоит тоже, ага ;)

Насчёт руби - это ты такой, и ещё некоторое количество людей. Остальные чаще думают «руби», подразумевают «рельсы».

javascript - замечательный язык, особенно, если хорошо ознакомиться с прототипами и их возможностями. Дуглас Крокфорд написал хорошие статьи.

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

Книга, в принципе, есть и в электронном формате. Я лично нашёл djvu, 20Мб. Качество прекрасное. Теперь хочу купить бумажный вариант и поставить его на полку, чтобы иногда перечитывать и использовать, как настольный справочник ;)
"Code Complete" у меня есть английская в pdf (5mb), просто никак времени не найду. :) Она ведь еще здоровая такая! 912 страниц! Много уже прочитал?

Крокфорда читал, как же. :) Но еще больше мне нравится читать (как книгу) сам исходный код известных библиотек (Prototype, Mootools, YUI) - очень много интересного.
Я прочитал больше половины ;) Плюс, выписываю замечания и понравившиеся мысли. Но пока времени нет продолжить чтение - работа.
Что за книгу обсуждаете? О JavaScript?
Это книга о разработке программ и разработчиках в целом. Она не сильно привязана к конкретным языкам и технологиям.
Когда меня спрашивают - на чём я пишу - я обычно отвожу глаза и говорю что это дурацкий вопрос.. ведь пишу я вроде как на всем. Но тут есть один момент. Рельсы, питон (django) и PHP - область их применения захлёстывает веб-разработку целиком. На рельсах и django писать проще чем на PHP. Но есть ещё дурацкая маркетинговая сила. Если разрабатывать большой проект - работодатель зачастую обеспокоен "а смогу ли я потом легко и дешево найти разработчиков?". В России популярность PHP не вызывает сомнений. Вот и приходится писать на PHP и маньячно оптимизировать то, что можно было бы просто написать с использованием другого языка.

Интересно иметь в голове такой факт - что на Си можно написать ВСЁ. Один раз нужно было написать простейший http-сервер, отдающий циферки (знакомым с торрентом - привет!). До красноты в глазах выдавливал из получившегося приложения скорость. Дрался с GIL в Питоне (молодой был, глупый ;)). В итоге приложение получилось ненормально быстрым (по сравнению с традиционными серверами) но очень сложным (и, как следствие, хрупким). Как раз после прочтения книги и пришла в голову мысль что я не пишу суперпрогу, а банально веду войну с Питоном. Переписали всё на DigitalMars D, прирост в скорости +400% и отчетливо простая внутренняя архитектура.. :)

В любом случае книги книгами - а голова важнее. А вот все вместе - это лучший набор ;)
Маркетинговая сила маркетинговой силой, а пхп не только из-за простоты и дешевизны поиска разработчиков популярен :) Сейчас, по-моему, уже более-менее всё устаканилось, рельсы и джанго взяли свои доли. Вот и сидим теперь, и пишем своё и на своём. Каждый из языков потихоньку развивается, каждый фрэймворк пытается переманить к себе - увеличение сообщества выгодно разработчику и сообществу.

Последнее предложение - очень верно. Особенно про всё вместе ;)

Я ведь специально Макконнелла рекомендую, прочитав его многие улучшат своё понимание, что положительно скажется на их жизни.
Для психов:
for ($i = count($big_array) - 1; $i > 0; $i--)
лучше переписать
for ($i = count($big_array) - 1; $i > 0; --$i)
т.к. $i-- выделяет дополнительную память для хранения предудыщего значения переменной, что в void контексте не имеет смысла.

Не для спора ;).
тьфу

да что нагородили то
лучше переписать все это на

for ($i = 0, $max = count($big_array); $i

ко всему прочему в вашем примере нулевой элемент массива и вовсе не войдёт в цикл.
гррр


for ($i = 0, $max = count($big_array); $i < $max; $i++) { ... }
Ага, знакомо. Просто в том примере ещё одна супер-мега-фишка-для-оптимизаторов использется - сравнение с 0 ;)
а ВЫ УВЕРЕНЫ, ЧТО ЛИШНЯЯ?
А Вы зачем фигачите в капсе :)? Я с блондинками не обсуждаю программирование :)!

Сорри, ничего личного, просто не удержался :).

Конечно лишняя. Зачем она?

for ($i = count($big_array) - 1; $i >= 0; --$i)
UFO just landed and posted this here
Это да. Но кто ж его знает, что он там оптимизировал. Это надо тестировать.
Само собой. Однако я априори сомневаюсь в адекватности "компилятора" PHP - это раз, а второе - разработчики компиляторов всегда писали одну важную вещь в доках: наш компилятор будет оптимизировать Ваш код, однако это не значит, что его нужно писать в расчёте на оптимизацию, когда большинство оптимизаций можно сделать самому.
кстати говоря споры о языках в стиле "у моего яйца круче вечером, а у твоего - утром" лишены смысла (хуже - они не лишены смысла для тех новичков, кто этого не понимает).

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

Даже появилась идея создания проекта, вроде списка всех возможных задач в программировании (начиная от работы с массивами, заканчивая реализацией MVC паттерна и так далее... =)), тем самым отпозиционируя все языки на четкие области применения... :) Может быть, такой проект уже существует?
UFO just landed and posted this here
не.. шотаут этот заточен именно под скорость языков, на синтетические тесты, а не на конкретные примеры реализаций (я имею ввиду крупные примеры - типа веб-приложение с реализацией MVC и т.п.)
Призывы прекратить обсуждение, какой язык лучше, сродни призывам сравнивать автомобили.
Автор хороший технолог, но никакой психолог.

Когда люди сравнивают языки, они же не сравнивают их объективные технологические достоинства.
Они сравнивают собственные пиписьки, в 99,3% случаев.

На 0,7% прходятся те редкие люди, которые действительно одинаково хорошо владеют больше, чем одним языком, и способны выдать объективный анализ. Во всех остальных отделить свой инструмент от своей личности психологически невозможно.

P.S. (PHP дерьмо, тем не менее :)
Может быть и никакой психолог ;) Хотя хорошо понимаю, что действительно, многие просто измеряют величину пиписьки, особенно те, кто перешёл с одного языка на другой. Это видимо такая же проблема, как и у иммигрантов, которые не смотря на то, что далеко не всем хорошо живётся, продолжают думать, что тут полный аврал, а там хорошо.

Призыв прекратить спорить - это так, побочное производство. Скажем, что это предназначено для тех самых 0,7% ;)

Основная же мысль, всё-таки, выделена жирным и находится примерно в середине ;)
Точнее, находилась. После двух ps, она сместилась вверх ;)
Даже 0,7% сравнивают те свойства объекта, которые они считают важными для своей задачи сейчас и на возможное планируемое будущее. Потому что не существует ничего, что было бы объективно лучше-хуже. Только применительно к конкретному классу задач или задаче возможно какое-то осмысленное сравнение. Причём в понятие "задача" здесь входит множество обстоятельств и интересов.
> Потому что не существует ничего, что было бы объективно лучше-хуже. Только применительно к конкретному классу задач или задаче возможно какое-то осмысленное сравнение.

Я бы не стал столь категорично утверждать. Боюсь, что если какому-нибудь ламеру (например, мне :)) сейчас поручить спроектировать какой-либо универсальный язык программирования, то получится полная ерунда. Причем полученный уродец вполне ОБЪЕКТИВНО будет хуже. И не только применительно к конкретному классу задач или задаче, но и в целом хуже (можно сказать по-другому - хуже по ВСЕМ параметрам, которые включают не только классы задач).
Можно построить доказательство и по-другому: можно ли создать исключительно уродский язык программирования, который будет объективно хуже всех имеющихся? По всем параметрам хуже? Если можно, то значит сравнение лучше-хуже для языков программирования имеет смысл.
Отсюда вывод: языки могут быть объективно лучше-хуже. Как по конкретным задачам, так и в целом.
Выбирать, разумеется, нужно лучший из _доступных_ языков. Для данной конкретной задачи. Это подразумевает в частности и чтение дискуссий "А вот этот язык умеет... А вот тут это реализовано быстрее... А вот я проводил некоторые тесты...". Но не просто чтения, а анализа всего написанного, применительно к вашей конкретной задаче. При этом выбор подразумевает также анализ вашей степени знакомства с языком, пожеланий заказчика, доступности хостинга/компилятора под целевую платформу и т.д. и т.п. Таким образом, вы выбираете лучший инструмент из своего арсенала, а при необходимости осваиваете новый, более эффективный для вашей задачи инструмент. Подчеркиваю, _инструмент_.
Коль вы уже выбрали язык программирования, то нужно писать именно "на нем". Это значит, с использованием его идеологии и его средств. То есть максимально эффективно. Иначе это не имеет смысла.
Тем не менее, не нужно быть фанатиком языка и использовать его везде, где только можно. Не нужно выбирать язык только потому, что он предоставляет какой-то синтаксический сахар. Не нужно ставить язык выше задачи.
Переходя к реальной жизни, можно привести следующий пример. Если вам что-то нужно кому-то сказать, вы ведь не ищете для каждой фразы язык, в котором эту фразу можно высказать с использованием минимума слов. Тем не менее, вам никто не мешает использовать для выражения вашей мысли тот язык, который лучше всего этому способствует, при условии, что язык знаком вам и ваша реплика в таком виде будет лучше понятна собеседнику.
Да-да, только одна поправочка:
Это значит, с использованием его идеологии и его средств.

но ими не ограничиваясь.
На языки программирования нужно смотреть как на инструменты, и выбирать нужный. Нельзя спорить что лучше отвертка или молоток, но для хорошей работы нужны качественные инструментоы, и их правильный выбор - начало успеха.
UFO just landed and posted this here
Считаю, что язык программирования - это лишь способ реализации своей идеи (мыслей, желаний - говорите как хотите), не принципиально на чем вы пишите, принципиально - как вы пишите, а еще важнее, как вы это проектируете.

Профессиональному разработчику нет разницы на каком языке кодить программу, даже если он его не знает ему не составит труда изучить.

Если брать, к примеру, объектно-ориентированную парадигму, то чем, в плане концепции отличается Delphi от C#? Да практически ничем. Или Java от С++? В том то и дело, что нужно программировать с использованием языка, а не на нем.

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

Если уж вы такие умные, покажите свои работы, что вы реально сделали? Многие реально ничего не сделали, а уже рассказывают что этот ЯП лучше, чем тот. А чем лучше? Тем что в одну строку можно код написать? А в другом в 2, 3, 10? Ерунда это все.
UFO just landed and posted this here
Извините, если, возможно, недостаточно точно выразился, но я вел речь о языках высокого уровня.
> Профессиональному разработчику нет разницы на каком языке кодить программу, даже если он его не знает ему не составит труда изучить.

Под фразой "нет разницы" в таком категоричном заявлении (чтобы оно оставалось правильным) надо понимать "готов писать на любом языке программирования, если того ПОТРЕБУЕТ задача", а отнюдь не "можно выбрать любой язык программирования". Если человек выберет для графических задач язык СУБД, то разработчиком назвать его можно, но вот слова "профессиональный" он точно не заслуживает.
С этим я полностью согласен.
Тогда рассуждаем дальше. Если тезис "Можно выбрать любой язык программирования" становится неверным (даже если мы речь ведем только о языках высокого уровня), то отсюда следует вполне логичный вывод, что не все языки программирования одинаково хороши, не так ли?
Дальше логическую цепочку продолжать или вывод уже очевиден?
Автор молодец хотя бы потому, что поднял тему.

Мое скромное - лучше бы спорили там об эффективности алгоритмов и технологичности кода, чем о том, какой язык круче, а какой говно.

Нет "программистов на xxx", есть программисты...Для которых действительно не составит проблемы решить поставленную задачу с использованием выбранных для разработки технологий. А уж кем и на каких основаниях должны выбираться эти технологии - вот хорошая тема для обсуждения.

Отдельного слова заслуживает пресловутый PHP. В последнее время стало просто модным кричать "Похапэ отстой", порой даже никак это не аргументируя...В итоге те несчастные, которым приходится использовать этот инструмент, чувствуют себя ущербными и начинают видеть ужасные перспективы работы за еду и деградации мозга...Есть, правда, товарищи, которым пофик - решают себе задачи и решают, используют тот инструмент который у них есть, и используют хорошо.

А вообще, хорошо чувствовать в себе независимость от средства разработки, от языка. Хорошо не быть "программистом на".

Stop holy war!
Читал, много смеялся.
Автор поста явно неадекватен. Ему задали полторы сотни конкреных вопросов, на которые он отвечает тремя заготовлеными загодя шаблонами-отмазками, применяя их впопад и невпопад:
1. Маркетоидный - "читайте книгу, там всё написано". Сэр, вы участвуете в этом бизнесе? :)
2. Банальный - "спорить о языке нужно до выбора языка, а не после". Ну да. И что?
3. В стиле Эллочки Людоедки - "не учите меня жить" - в варианте автора - не пытайтесь открыть мои уже открытые глаза, - или, перефразируя на язык обыденых метафор, - "все п..., (ой, лица с нетрадиционной сексуальной ориентацией), а я - д'Артаньян"
Если эта неадекватность - последствия чтения этой книжки, то ну её нафиг такую книжку. :)
Ну хоть посмеялись - и то польза.

Насчёт моей неадекватности, то приглядитесь - вы ничуть не менее неадекватны. А уж если посмотреть на количество согласных, то получается, что обыденная метафора из вашего пункта 3 применима скорее к вам.

На конкретные вопросы я старался отвечать, отфильтровывая те, которые были вызваны неудобствами пхп, потому как тема статьи пхп касается вряд ли.

Своим комментарием вы показали своё хорошее знакомство с книжным бизнесом, знание стиля Эллочки Людоедки и умение задавать вопросы «И что?» - с чем вас и поздравляю.

Всего вам самого наилучшего, перечитайте статью, посмейтесь ещё раз.
Своим комментарием вы показали своё хорошее знакомство с книжным бизнесом, знание стиля Эллочки Людоедки и умение задавать вопросы «И что?» - с чем вас и поздравляю.
Прикольно. У меня возникло стойкое дежавю, что я общаюсь с одной из программ типа "доктор" или "элиза". :)
Кстати, если я непонятно выразился, то поясню - вопрос "и что?" в данном контексте означает, - "разве с этим кто-то спорил?" и недоумение по поводу того зачем отвечать несколько раз на вопрос, который никто не задавал. Причём в виде ответа на совсем другие вопросы :) :).
Бедный, мне вас жаль - вам часто приходилось общаться с ботами.
Пояснять ничего не надо. С вами всё ясно, вы долбоёб.
Невоспитаный, хамящий бот? Фу-у-у. И не лень же кому-то было писать такое дурно пахнущее ПО... :(
Sign up to leave a comment.

Articles