avva: (Default)
[personal profile] avva
«Смолток просто-напросто непрактичен» — пишет [livejournal.com profile] dz, наряду с другой ерундой, в своём сравнении Джавы и Смоллтока. Видно, что он просто не очень хорошо понимает, какая это качественная разница — действительное динамическое ООП — если думает, что «есть reflection API, который все ПРАКТИЧЕСКИЕ задачи - решает». Конечно, все практические задачи, которые могут возникнуть в системе, спроецированной статически, он решает, а другие задачи человеку, не понимающему Смоллток и динамическое ООП, и в голову не придут.

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

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

Во мне, когда я думаю об этом, борются два противоположных хода мысли. С одной стороны, мне хочется сказать, что язык и его особенности часто переоценивают. В конечном итоге всё решает сложность поставленной задачи, переходящая в сложность работы программиста, решающего эту задачу. Язык программирования как бы стоит посредине этого перехода, «амортизируя» часть сложности задачи и принимая её на себя; но использование разных языков хоть и меняет качество этой амортизации, но не слишком значительно, не во много раз. Использование очень разных языков программирования, основанных на разных подходах, может давать преимущество в тех или иных удобных для решения этими подходами задачах; но в случае, если таких удобств или специальных требований нет, их эффективность примерно одинакова, есть только иллюзия особенной эффективности того или иного языка, появляющаяся у программиста, который очень хорошо его знает, привык, притёрся к нему, и действительно для него лично он быстрее и эффективнее всего остального.

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

В общем, я лично сохраняю скептицизм по этому поводу, и первая из вышеописанных точек зрения в целом побеждает во мне вторую. Ко второй, тем не менее (и вообще к теме разных подходов к программированию, и тому, насколько такие подходы влияют на результаты и эффективность работы программиста) сохраняется живой интерес. Так вот, наиболее убедительные и подтверждённые фактами претензии на особую эффективность любимого языка, которые мне приходилось встречать, проистекали из среды поклонников двух языков: Смоллток и Форт. Не знаю, почему именно эти два, возможно, это больше случайность моего личного знакомства с языками, программистами, и различными сетевыми обсуждениями этой темы, чем какая-то объективная реальность; и, как я написал выше, я вовсе не уверен в том, что такие претензии основаны на чём-то реальном. Но любопытно отметить, что общего в этих двух языках (вообще-то очень разных): именно концептуальная чистота языка («всё — объект» или «всё — макро») и ещё я бы отметил интеграцию языка внутри интерактивной системы, полностью написанной на этом же языке, что-то вроде мини-ОС для языка.

Date: 2004-12-21 03:45 pm (UTC)
From: [identity profile] sobaker.livejournal.com
1. Обратного это тоже не доказывает.
2. Культура программирования на Смоллток действительно выше (в массе своей)
3. Второй пункт означает, что смоллтокерам не так уж сложно изучать и поддерживать чужой код. Мнение, что все библиотеки пишутся с нуля - ошибочно, есть мощные промышленные среды разработки на Смоллток (visual works от cincom, visual age от ibm).
4. Средний знаменатель - это хорошо. Но это средний знаменатель. Зачем отказываться от лучшего?

А вообще, я столько написал в комментариям к 4-м последним постингам [livejournal.com profile] dz, что мне тоже нет смысла повторять этого :)

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

Date: 2004-12-21 04:30 pm (UTC)
From: [identity profile] dz.livejournal.com
Ёпрст. "Зачем отказываться от лучшего".

НЕЛЬЗЯ ГОВОРИТЬ О РЕШЕНИИ БЕЗ ЗАДАЧИ.
НЕЛЬЗЯ ГОВОРИТЬ О РЕШЕНИИ БЕЗ ЗАДАЧИ.
НЕЛЬЗЯ ГОВОРИТЬ О РЕШЕНИИ БЕЗ ЗАДАЧИ.
НЕЛЬЗЯ ГОВОРИТЬ О РЕШЕНИИ БЕЗ ЗАДАЧИ.

Надо взять задачу, посмотреть на неё, посмотреть на инструмент, и выяснить, что он ОЧЕНЬ хороший, но...

Блин, вы вообще о чём? Вот у меня сейчас есть задача с бюджетом в 5 с половиной нулей долларов. Ну и каким хуем я буду решать её на смоллтоке, если в Москве даже Ява-программистов - днём с огнём не сыскать? Вы о чём вообще? Какой смолток - я ЗАПРЕЩАЮ использовать яву 1.5, да и от J2EE/EJB отказываюсь.

Вот тебе и отказываться от лучшего. Даже если я найду семь программеров на смоллтоке в Москве (а обойдутся они дороже Явских и будут МЕНЕЕ опытны ввиду отсутствия задач) заказчик посмотрит на меня как на идиота и отдаст работу другому исполнителю. И САМ Я, если бы был заказчиком, СДЕЛАЛ БЫ ТАК ЖЕ.

Оно НЕ ЛУЧШЕЕ. Оно (вероятно) лучшее по одной оси. Вы просто смотрите на один фактор, а факторов много.

Date: 2004-12-21 04:50 pm (UTC)
From: [identity profile] sobaker.livejournal.com
И к чему мы пришли? Что хороших программистов мало. Это так. Это даже _очень_ так.
Что заказчики консервативны. Это тоже так.
Что в Вашем конкретном случае использовать его не получится.

И что? Silver bullet никто и не предлагал.

Date: 2004-12-21 05:05 pm (UTC)
From: [identity profile] dz.livejournal.com
Его не в моём, а в 99% конкретных случаев не получится. Как и 99% всех языков в мире. Более того - даже у Objective C, который, в общем, изрядное уёбище, шансов больше, потому что его gcc компилирует, а это уже - худо-бедно что-то. Хотя, конечно, сравнивать бесконечно малые величины - само по себе занятие дурацкое. :)

Ты говоришь: "почему Ява, а не Смолток". Я говорю - потому что не судьба. А мне в ответ "ты не понимаешь всей красоты". Ах. Да понимаю, но всё равно не судьба же.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 09:54 pm
Powered by Dreamwidth Studios