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

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

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

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

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

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

Date: 2004-12-21 02:46 pm (UTC)
From: [identity profile] kalvado.livejournal.com
Разрешите не согласиться с - не во много раз..
По крайней мере у меня очень хорошее впечатление от LabView (http://www.ni.com/labview/). Да, для конкретных задач - но для множества инженерно-технически-контрольных...
Я просто писал одно и тоже почти, в разные времена, на Pascal, Delphi i LV - там правда в разы разница ;)
Хотя не все верят что LV- язык программирования..

Date: 2004-12-21 03:34 pm (UTC)
From: [identity profile] etonei.livejournal.com
В данном слוучае я не уверен, что сравнение правомочно. [livejournal.com profile] avva, если я правильно понимаю, имеет в виду сравнение языков, в которых сильно отличается сама идея на которой язык построен. LabView - это, фактически, набор wrappers для удобного обращения к внешним устройствам + набор специфических controls для ввода-вывода информации (графики, там, тумблера и т.д.) + какие-то блоки, "клей", с помощью которого обеспечивается передача данных между первыми двумя. Так вот, если сравнивать именно языки, то этот самый "клей" ничего концептуально отличающегося по сравнению, например, с C не содержит - просто оформлен графически, а не текстом. Единственное, пожалуй, что выделяется - это что LabView, если ему по рукам вовремя не дать, все что угодно норовит сделать отдельным тредом, но я не думаю, что это может претендовать на звание концепции.

То есть, тут заслуга, скорее, оболочки, чем собственно языка.

Date: 2004-12-21 04:04 pm (UTC)
From: [identity profile] kalvado.livejournal.com
Razreshite chastichno ne poverit';)
dve veshi - pervaya -nabor bibliotek. Da, on specificheski optimizirovaqn - cho navernoe ne koncepciya. Hotya, ne uveren chto vstavka grafika v programmu v luboj drugoj srede budet proshe..
Vtoroe - i eto uje na koncepciyu tyanet - graficheskoe predstavlenie.
Svoi minusy tut est' - no est' i poleznye fichi: net imen peremennyh, kotorye mojno sputat', algorim viden glazu - men'she veroyanost' zaputat'sya v 3 sosnah.. A eto uje mojno nazvat' koncepciej, po-moemy...

Date: 2004-12-21 04:32 pm (UTC)
From: [identity profile] etonei.livejournal.com
ne uveren chto vstavka grafika v programmu v luboj drugoj srede budet proshe.

Visual Studio + Measurement Studio от того же NI :) Я этой штукой, правда, не пользовался, она относительно недавняя, но если то что они рекламируют правда - удобство будет то же, плюс куда большая гибкость языка.

graficheskoe predstavlenie...A eto uje mojno nazvat' koncepciej, po-moemy

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

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. 30th, 2025 01:20 am
Powered by Dreamwidth Studios