о языках программирования
Dec. 21st, 2004 04:22 pm«Смолток просто-напросто непрактичен» — пишет
dz, наряду с другой ерундой, в своём сравнении Джавы и Смоллтока. Видно, что он просто не очень хорошо понимает, какая это качественная разница — действительное динамическое ООП — если думает, что «есть reflection API, который все ПРАКТИЧЕСКИЕ задачи - решает». Конечно, все практические задачи, которые могут возникнуть в системе, спроецированной статически, он решает, а другие задачи человеку, не понимающему Смоллток и динамическое ООП, и в голову не придут.
Мне это, впрочем, напомнило тему «супер-языков», о которой приходилось иногда размышлять. Под этим я понимаю вот что: иногда бывает так, что поклонники какого-то языка программирования утверждают, что использование их языка позволяет повысить эффективность написания тех или иных сложных программ в несколько раз (а то и больше). Вообще-то подобные утверждения то и дело высказывают поклонники чуть ли не любого языка программирования, но обычно их не стоит воспринимать всерьёз. Но это не значит, что такое в принципе невозможно, с другой стороны.
Как-то это сумбурно звучит, поэтому попробую зайти с другой стороны. Ясно, что есть области применения, в которых некоторые языки подходят куда лучше других. Ясно, что программисты разнятся по своим способностям, качеству и скорости работы, эффективности результата, и прямое сравнение тут невозможно. Если мы учтём все эти «ясно» и попытаемся всё же вынести из за скобки, останется ли внутри что-то объективное, зависящее от языка? И если останется, насколько оно влиятельно?
Во мне, когда я думаю об этом, борются два противоположных хода мысли. С одной стороны, мне хочется сказать, что язык и его особенности часто переоценивают. В конечном итоге всё решает сложность поставленной задачи, переходящая в сложность работы программиста, решающего эту задачу. Язык программирования как бы стоит посредине этого перехода, «амортизируя» часть сложности задачи и принимая её на себя; но использование разных языков хоть и меняет качество этой амортизации, но не слишком значительно, не во много раз. Использование очень разных языков программирования, основанных на разных подходах, может давать преимущество в тех или иных удобных для решения этими подходами задачах; но в случае, если таких удобств или специальных требований нет, их эффективность примерно одинакова, есть только иллюзия особенной эффективности того или иного языка, появляющаяся у программиста, который очень хорошо его знает, привык, притёрся к нему, и действительно для него лично он быстрее и эффективнее всего остального.
С другой стороны, мне хочется сказать, что всё наоборот. Метафора амортизации несостоятельна, т.к. не отражает тот факт, что, глядя на одну и ту же задачу с точки зрения очень разных языков и подходов к программированию, мы видим совершенно разные вещи, и исходная сложность поставленной задачи не является чем-то неизменным, она навязана нам тем взглядом, к которому мы привыкли; при смене языка/взгляда/подхода может оказаться, что всё стало во много раз легче, и это не какой-то особенный случай, вызванный специальными обстоятельствами исходной задачи, а самое обыденное дело. И может оказаться, что какие-то языки с этой точки зрения особенно эффективны, т.е. очень хорошо знающий такой язык программист сможет в среднем работать значительно эффективнее, чем очень хорошо знающий другой язык программист тех же способностей, при работе над той же не-специальной задачей общего направления (естественно, такая точка зрения должна опираться на предположение о возможности определить «задачу общего направления» и «примерно тех же способностей» так, чтобы не впасть в замкнутый круг, и, действительно, неочевидно, что можно это сделать).
В общем, я лично сохраняю скептицизм по этому поводу, и первая из вышеописанных точек зрения в целом побеждает во мне вторую. Ко второй, тем не менее (и вообще к теме разных подходов к программированию, и тому, насколько такие подходы влияют на результаты и эффективность работы программиста) сохраняется живой интерес. Так вот, наиболее убедительные и подтверждённые фактами претензии на особую эффективность любимого языка, которые мне приходилось встречать, проистекали из среды поклонников двух языков: Смоллток и Форт. Не знаю, почему именно эти два, возможно, это больше случайность моего личного знакомства с языками, программистами, и различными сетевыми обсуждениями этой темы, чем какая-то объективная реальность; и, как я написал выше, я вовсе не уверен в том, что такие претензии основаны на чём-то реальном. Но любопытно отметить, что общего в этих двух языках (вообще-то очень разных): именно концептуальная чистота языка («всё — объект» или «всё — макро») и ещё я бы отметил интеграцию языка внутри интерактивной системы, полностью написанной на этом же языке, что-то вроде мини-ОС для языка.
Мне это, впрочем, напомнило тему «супер-языков», о которой приходилось иногда размышлять. Под этим я понимаю вот что: иногда бывает так, что поклонники какого-то языка программирования утверждают, что использование их языка позволяет повысить эффективность написания тех или иных сложных программ в несколько раз (а то и больше). Вообще-то подобные утверждения то и дело высказывают поклонники чуть ли не любого языка программирования, но обычно их не стоит воспринимать всерьёз. Но это не значит, что такое в принципе невозможно, с другой стороны.
Как-то это сумбурно звучит, поэтому попробую зайти с другой стороны. Ясно, что есть области применения, в которых некоторые языки подходят куда лучше других. Ясно, что программисты разнятся по своим способностям, качеству и скорости работы, эффективности результата, и прямое сравнение тут невозможно. Если мы учтём все эти «ясно» и попытаемся всё же вынести из за скобки, останется ли внутри что-то объективное, зависящее от языка? И если останется, насколько оно влиятельно?
Во мне, когда я думаю об этом, борются два противоположных хода мысли. С одной стороны, мне хочется сказать, что язык и его особенности часто переоценивают. В конечном итоге всё решает сложность поставленной задачи, переходящая в сложность работы программиста, решающего эту задачу. Язык программирования как бы стоит посредине этого перехода, «амортизируя» часть сложности задачи и принимая её на себя; но использование разных языков хоть и меняет качество этой амортизации, но не слишком значительно, не во много раз. Использование очень разных языков программирования, основанных на разных подходах, может давать преимущество в тех или иных удобных для решения этими подходами задачах; но в случае, если таких удобств или специальных требований нет, их эффективность примерно одинакова, есть только иллюзия особенной эффективности того или иного языка, появляющаяся у программиста, который очень хорошо его знает, привык, притёрся к нему, и действительно для него лично он быстрее и эффективнее всего остального.
С другой стороны, мне хочется сказать, что всё наоборот. Метафора амортизации несостоятельна, т.к. не отражает тот факт, что, глядя на одну и ту же задачу с точки зрения очень разных языков и подходов к программированию, мы видим совершенно разные вещи, и исходная сложность поставленной задачи не является чем-то неизменным, она навязана нам тем взглядом, к которому мы привыкли; при смене языка/взгляда/подхода может оказаться, что всё стало во много раз легче, и это не какой-то особенный случай, вызванный специальными обстоятельствами исходной задачи, а самое обыденное дело. И может оказаться, что какие-то языки с этой точки зрения особенно эффективны, т.е. очень хорошо знающий такой язык программист сможет в среднем работать значительно эффективнее, чем очень хорошо знающий другой язык программист тех же способностей, при работе над той же не-специальной задачей общего направления (естественно, такая точка зрения должна опираться на предположение о возможности определить «задачу общего направления» и «примерно тех же способностей» так, чтобы не впасть в замкнутый круг, и, действительно, неочевидно, что можно это сделать).
В общем, я лично сохраняю скептицизм по этому поводу, и первая из вышеописанных точек зрения в целом побеждает во мне вторую. Ко второй, тем не менее (и вообще к теме разных подходов к программированию, и тому, насколько такие подходы влияют на результаты и эффективность работы программиста) сохраняется живой интерес. Так вот, наиболее убедительные и подтверждённые фактами претензии на особую эффективность любимого языка, которые мне приходилось встречать, проистекали из среды поклонников двух языков: Смоллток и Форт. Не знаю, почему именно эти два, возможно, это больше случайность моего личного знакомства с языками, программистами, и различными сетевыми обсуждениями этой темы, чем какая-то объективная реальность; и, как я написал выше, я вовсе не уверен в том, что такие претензии основаны на чём-то реальном. Но любопытно отметить, что общего в этих двух языках (вообще-то очень разных): именно концептуальная чистота языка («всё — объект» или «всё — макро») и ещё я бы отметил интеграцию языка внутри интерактивной системы, полностью написанной на этом же языке, что-то вроде мини-ОС для языка.
no subject
Date: 2004-12-21 02:38 pm (UTC)прекрасно сливается с
в одной магической фразе: 'right tool for the job' :)
Конечно, чтобы выбрать right tool, надо иметь о разных инструментах представление, а лучше -- и практический опыт использования. Это не всегда легко достижимо: обычно от программиста требуют опыта, потому надо вкладываться в некоторый набор всерьёз, а остальные приходится оставлять в рамках хобби.
no subject
Date: 2004-12-21 03:02 pm (UTC)Я например уже давно хочу обкатать Ocaml в какой нибудь реальной задаче, но пока боюсь делать на нем что-то серьезное, просто потому что знаею его не досконально... Можно упереться в какую нибудь малознакомую мелочь. Хотя то что тривиально пишется на с/с++/перле я в состоянии написать и на окамле.
(no subject)
From:no subject
Date: 2004-12-21 02:46 pm (UTC)По крайней мере у меня очень хорошее впечатление от LabView (http://www.ni.com/labview/). Да, для конкретных задач - но для множества инженерно-технически-контрольных...
Я просто писал одно и тоже почти, в разные времена, на Pascal, Delphi i LV - там правда в разы разница ;)
Хотя не все верят что LV- язык программирования..
no subject
Date: 2004-12-21 03:34 pm (UTC)То есть, тут заслуга, скорее, оболочки, чем собственно языка.
(no subject)
From:(no subject)
From:no subject
Date: 2004-12-21 02:56 pm (UTC)Во первых - защищенноть от ошибок. Даже прекрасные программист, трезвенник и тп может устать, простыть и сделать ошибку. Хорошо если язык позволяет ее найти. Примеры удачных языков в этом отношении есть - например на Haskell очень тяжело сделать ошибку, которую не заметит компилятор. Естественно, это дается не бесплатно - программировать на этом языке часто бывает тяжело.
Во вторых язык не только сам "амортизирует", но и может предоставить возможность добавить свой "амортизатор". В простейшем случае это ограничевается повторным использованием (здесь Смоллток и Форт очень хорошо смотрятся), в общем возможна разработка domain-specific language (здесь преуспели OCaml и Lisp/Scheme).
Кроме того в сравнении Джавы и Смоллтока надо вспомнить про шаблоны. IMHO, основанная на шаблонах система типов позволяет решать все осмысленные задачи, которые решаются динамической типизацией (включая гнилой reflection/RTTI).
no subject
Date: 2004-12-21 02:58 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Раз уж про DSL разговор зашел
Date: 2004-12-21 03:34 pm (UTC)http://www.onboard.jetbrains.com/articles/04/10/lop/
no subject
Date: 2004-12-21 03:11 pm (UTC)1. "Правильность" смолтока и форта - понятие чисто религиозное, и из правильности вовсе не следует что эти языки хороши.
2. Язык определяется не только его синтаксисом и грамматикой, но и определяемой этим языком культурой написания программ. так например, язык С(C++) сам по себе очень хороший, но будучи поставляем в комплекте с микрософтовской библиотекой, графомански написанной и омерзительно документированной, он становится плохим, ибо перед программистом встает дилемма - или сочинять АБСОЛЮТНО ВСЕ самому, или дружить с дурно пахнущим слоном. Промежуточного не дано, ибо модули микрософтовской библиотеки завязаны друг с другом как спагетти, и использование одного кусочка означает прмменение всего этого дерьма целиком.
3. Языки ФОРТ и Смоллток позволяют отдельно взятым талантливым хакерам определить свою среду (свою библиотеку, свои обозначения) с самого начала. Это хорошо когда ничего не создано, но отвратительно когда надо поддерживать крупную разработку длящуюся десятки лет. Ни у какого отдельно взятого хакера не хватит терпения изучать творения другого хакера - он скорее все перепишет сам. По сути дела каждая такая среда является Своим собственным языком программирования, а язык программирования - это нечто, что должно учиться не от формальных правил, а подсознательно - самое главное красота и естественность. Программист не может учить сотню языков - в какой-то момент он звереет и создает свой собственный.
4. Джава предлагает может быть и не самый оптимальный, но некоторый стиль программирования при котором наконец-то (!) программы могут жить долго, и одни программисты могут читать и пользоваться трудами других программистов. Преимущество состоит в "естественности стиля". В Джаве есть конечно тоже свои плюхи - например омерзительное EJB и J2EE и весьма сомнительная философия листенеров - но это все семечки по сравнению с тем количеством мерзости, которая налипла на другие языки за десятки лет насильственного внедрения графоманских идей крупными фирмами. Пока Джава пожалуй наилучший язык программирования, хотя и Джава рано или поздно умрет в конвульсиях, засорившись как C++, наносной дрянью.
no subject
Date: 2004-12-21 03:17 pm (UTC)no subject
Date: 2004-12-21 03:24 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2004-12-21 03:45 pm (UTC)2. Культура программирования на Смоллток действительно выше (в массе своей)
3. Второй пункт означает, что смоллтокерам не так уж сложно изучать и поддерживать чужой код. Мнение, что все библиотеки пишутся с нуля - ошибочно, есть мощные промышленные среды разработки на Смоллток (visual works от cincom, visual age от ibm).
4. Средний знаменатель - это хорошо. Но это средний знаменатель. Зачем отказываться от лучшего?
А вообще, я столько написал в комментариям к 4-м последним постингам
Повторюсь, я не говорю, что Java - уж очень плохой язык. Но это - очень средненький язык.
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2004-12-21 03:29 pm (UTC)Я вот гляжу на поделие наших джавадевелоперов и думаю, а фигли не рассматривать любой диалог с пользователем как функцию 'a -> 'a, где 'a это некий элемент или кортеж данных. Хотя наверное это придумал до меня.
no subject
Date: 2004-12-21 04:13 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2004-12-21 04:07 pm (UTC)1. Ну, начинается всё со стандартного наезда - обычно я его слышу из лагеря функциональщиков: dz типа не сечёт парадигмы, а если б сёк - пёрся бы, как всё круто.
Это всё офигенно, конечно, только я худо-бедно знаю, что такое смоллтоковская парадигма. Я вообще старый и с седыми яйцами, я языки программирования делаю на завтрак. Смолтокообразные в том числе. С абсолютной рефлексивностью в том числе.
"Если бы он втыкал в смолток, он бы придумал задачи для него".
Когда моя жизнь станет ТАК скучна, что мне придётся придумывать задачи - я повешусь. До сих пор задачи мне поставляет окружающий мир. И только это и есть задачи. А то, что ты придумал сам, называется УПРАЖНЕНИЕ или ЭТЮД. Языки Паскаль (оригинальный) и Смоллток (любой) для упражнений и этюдов очень хороши. Хоть и не для всех. (Типа наехал в ответ. Типа нефиг наезжать не по делу, это все умеют.)
Короче: на бочку задачу, для которой Смолток невероятно хорош. (Моя многолетняя практика общения на эти темы показывает, что задача или не появляется, или оказывается весьма академической.)
Конец пункта 1. Краткое содержание пункта 1: Люди, которые прутся от N, склонны считать, что только они по-настоящему понимают N. Они ошибаются.
2. В 1 сказано: есть такая тема - настоящие объектные языки. Завалишин не сечёт, как же они круты. А дальше сказано: правда, я сам не знаю, есть ли вообще между языками разница. Может и нет.
Бабка - ты определись. "dz не сечёт" или "я тут такой весь диалектический в душе, мудро размышляю, где ж истина.".
3. Right tool for the job, как тут уже сказано.
4. Товарищ. Коли ты уже добрался о мыслей о парадигмах и их применимости к конкретным задачам, различай и программистов.
Одним программистам нужны годы, чтобы въехать в новую парадигму, и они будут нуждаться в полном комплекте инструментов.
Другим требуется полчаса на понимание, а потом пара дней и ЛЮБОЙ язык программирования, чтобы эту парадигму воплотить.
Ты меня извини, но так неудачно получилось, я тут ровно вчера как раз оживил интерпретатор байткода для языка, чем-то (не парадигмой ли?) напоминающего смолток. Я примерно раз в пару лет какой-нибудь язычок делаю, как показывает практика. Из них пара применяется примерно полмиллиона раз в день.
Я - очень неудачный слушатель для того, чтобы учить меня парадигмам. Я могу такую парадигму выкатить, от которой самые экстремалы почувствуют себя либерально. Толку-то.
Я, знаешь, когда мне говорят "ты не понимаешь" раньше смеялся, а теперь уже просто оторопь берёт: вы ПРАВДА считаете, что ЭТО (парадигма смолтока) - какое-то откровение господне?
3.14здец. Яду мне.
ДЕТИ! Если дедушка не назвал вашу игрушку лучшей, то это не потому, что он не умеет играть. Он умеет. Отличайте же академическое от практического. Если я говорю "по России надо ездить на Жигулях", то это не потому, что я не видел машин лучше. Это ИМЕННО потому, что я видел.
Нет, б..дь, яду мне. Ну вот он лежит - вот, интерфейсы, методы, код, класс, голимый интеджер на... - ВСЁ ОБЪЕКТ. И фигли? Что ж, блядь (тут уже без точек надо), за магия такая в этом? Ну - Я-ТО ХОТЬ ЗНАЮ, ЗАЧЕМ МНЕ ЭТО. Это исследовательский проект. Есть свои причины. НО ВАМ-ТО ЗАЧЕМ!?
И - КАК ТОЛЬКО Я ПОЙМУ, КАК ИМЕННО ЭТО СДЕЛАТЬ - Я ЛИШУ ЕГО ЭТОЙ КРАСОТЫ РАДИ ПРАКТИЧНОСТИ!
Форт ещё. А что ж не Рефал? А где Плэннер? А на unix sed писать не пробовали? Это невероятно красивый язык - всё - строка. Бляд. Сил моих нет.
Страдания юных вертеров - отчего противные людшки на красивые автобусы только смотрят, а ездят на мерзких, но быстрых. Потому что красота - это чтоб смотреть и восторгаться, товарищ. И - вы удивитесь, сантехник, который чинит вам унитаз, тоже может слушать Ренуара, читать Баха и глядеть на полотна Пушкина взглядом истинного эстета.
Я рад, что всё больше и больше людей дошло до понимания и оценки красоты концепций. Теперь, раз уж вы это постигли, надо сделать усилие над собой и понять, что оптимизация идёт по многим факторам, и красота парадигмы в некоторые члены входит с минусом.
(Я не очень сегодня злой? Извини, если что. Не имел в виду обидеть.)
no subject
Date: 2004-12-21 04:14 pm (UTC)(no subject)
From:no subject
Date: 2004-12-21 04:21 pm (UTC)Мммм... продвинутй GUI? Вот, скажем, IDE какая-нибудь. Вроде на смоллтоке отлично выходит?
На форте многие embedded-программеры пишут оч. эффективно (знаком с людьми). Он и придумывался для таких вещей (телескопом управлять, iirc). Не хуже C во многих случаях. Да чего я объясняю :)
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2004-12-21 04:32 pm (UTC)"Короче: на бочку задачу, для которой Смолток невероятно хорош"
(устало)
да для любой, в общем-то - в разумных, конечно, пределах.. Это язык общего применения От навигационных систем до текстовых редакторов (впрочем, и про embdedded я писал у тебя в комментариях).
ну скажем:
http://www.cincom.com/forms/profiles.html
http://www.whysmalltalk.com/production/
И не нужно про юного Вертера. Все, с чем я спорю - не нужно считать Смоллток академическим языком. Красота концепций - в каком-то смысле, побочный эффект. Или мысль о том, что практический язык может быть еще и красив концептуально - невозможна? Зачем к ней привязываться в духе "шашечки или ехать"? И шашечки, И ехать!
Да, он не в 50 раз лучше, чем Java и С++. Так что, я это где-то утверждал?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(если серьезно)
From:(no subject)
From:(no subject)
From:(no subject)
From:И еще
Date: 2004-12-21 04:48 pm (UTC)Дмитрий, я прощу прощения, я не говорю, что "дедушка не умеет", но приведенная Вами ссылка - это Google's "I'm feeling lucky" по запросу "Smalltalk vs Java". Или она просто наиболее четко выражает Ваше отношение к языку?
Между прочим, I'm feeling lucky на "обратном" запросе дает куда более развернутый и интересный вариант..
Re: И еще
From:Re: И еще
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:it's that time of the year
вообще, непонятно чего это народ завёлся.
языки программирования делятся на языки узкого применения и языки широкого применения.
с языками узкого применения всё понятно, говорить не о чем. если есть чётко поставленная задача и язык, под неё заточенный — ура.
с языками широкого применения всё несколько сложнее. народ почему-то начинает их сравнивать по фичерам, продуктивности, типированности и прочим техническим частностям, и быстро погрязает во вкусовщине о многоходовых рационализациях. а прикол в том, что основным критерием выбора языка широкого применения является вовсе не задача. никогда, причём. а является этим критерием всегда устройство собственно коллектива разработчиков.
и сразу всё становится просто:
. если босс идиот, а работники у него мазохисты, то коллектив пишет на C++ и тащится от собственной крутизны. писать сегодня на языке без safe runtime могут только идиоты и мазохисты, и хватит о них.
. если босс умница, а работники у него индусы (условно), то коллектив пишет на Жабе или C#. потому как на этих языках сложно написать так, чтобы было непонятно. хотя и на них можно, конечно, но это надо уметь, а индусы (условно) не умеют.
. если босс сам себе работник, то тут зависит от его задвигов. может на Smalltalk'e писать, может на ML, может на Питоне, anything goes, лишь бы с сетью и файлами работать умело. может и на Жабе, почему нет?
P.S. для зануд: да, бывают ситуации, в которых языки с мусоросборщиками неприменимы. в таком случае отсутствие мусоросборщика становится критическим свойством узкой применимости, смотри рисунок 1.
no subject
Date: 2004-12-21 06:11 pm (UTC)Re: it's that time of the year
From:Re: it's that time of the year
From:Re: it's that time of the year
From:Re: it's that time of the year
From:Re: it's that time of the year
From:Re: it's that time of the year
From:Re: it's that time of the year
From:no subject
Date: 2004-12-21 08:12 pm (UTC)Эх, помню в детстве, после глубокого погружения в Пролог, я такие конструкции на других языках закручивал, что сам потом долго удивлялся.
no subject
Date: 2004-12-21 09:30 pm (UTC)Вывод - всё это syntactic sugar. "If you can fly Camel, you can fly anything." [из Top Secret, хотя я могу и ошибаться]
На самом деле, задача языка - просто автоматизировать часто повторяющиеся куски. Вроде распределения регистров или проверки типов. Всё остальное - исключительно дело вкуса (и, в какой-то степени, эргономики).
no subject
Date: 2004-12-22 06:18 am (UTC)(no subject)
From:no subject
Date: 2004-12-21 10:23 pm (UTC)Форт, конечно, идеальный язык - на нём мгновенно строится свой язык для приложения, ну и всё.
Но Джава, Джава тоже не мертва ещё. С дженериксами там очень даже можно писать красивые абстрактные вещи. Что и делаем-с.
no subject
Date: 2004-12-22 06:56 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:Мои мысли на этот счёт:
Date: 2004-12-28 09:30 am (UTC)рассматриваться как замкнутая система.
Есть ещё:
1. Терабайты написанного кода библиотек, доступных в исходниках для некоторых языков (С, С++). Эти библиотеки в разной степени подходят для повторного использования.
2. Скомпилированные (внешние) библиотеки, в том числе поставляющиеся с OS. Разные языки в разной степени подходят для их использования (VB[s] - best development speed, С[++] - best perfomance, Java - всё плохо). Это - сильная сторона мира windows (COM-объекты).
3. Тысячи людей в мире которые программируют, тестируют, общаются в форумах, задают вопросы и бесплатно получают ответы. Количество таких людей (=время на поиск решения если идеи "что бы ещё проверить" кончились) сильно различается от языку к языку.
3. Уже написанные OpenSource-продукты с подходящей лицензией. IMHO больше всего OpenSource пишется на С++. Это — сильная сторона клонов unix.
4. Инструментальные средства. Во-первых, поддержка со стороны разработчиков компилятора и IDE. Во-вторых, инструменты по профилированию, тестированию, и т.п.
5. Возможности для групповой работы нескольких людей над одним проектом (если актуально).
6. Разные языки в разной степени близки к комп. железу. Ещё не скоро появится коммерчески успешная ОС написанная в основном на Java, потому что разработчики железа всё равно будут использовать С[++] и ASM для написания драйверов.
7. Эффективность исполнения (если актуально). Покажи мне 3D игрушку движок которой написан на java или на скриптах.
no subject
Date: 2004-12-28 08:58 pm (UTC)Последние несколько лет я работаю в команде, стандартом de facto которой стала перманентная борьба с языком. Не называю язык, ни род деятельности команды, чтобы не уходить в частности, забывая о главном. А главное состоит в том, что выбор инструментария вторичен, как вторичен и выбор аксиоматики. Первична, разумеется, практическая, а точнее, не побоюсь этого слова, коммерческая составляющая проекта. То есть, вложенные в инфраструктуру, лицензионный софт, железо, разработку собственного проекта и, last but not least, подготовку сотрудников и администраторов деньги. На фоне этих многолетних и немаленьких затрат переподготовка грамотного опытного специалиста (по контрасту с наймом новых специалистов) выглядит не слишком дорогостоящей.
Профессионал, который борется с языком, выглядит, конечно, глупо. Но заказчик, который настаивает на инструментарии, вынуждающем дорогостоящего профессионала непрерывно с ним бороться, выглядит еще глупее. А где золотая середина? Если проект уже поздно переделывать с нуля целиком?
Что значит бороться с языком?
Date: 2004-12-29 08:29 pm (UTC)