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

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

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

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

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

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

Date: 2004-12-23 10:50 am (UTC)
From: [identity profile] rivig.livejournal.com
пример кода на чем? на Питоне? давайте несложную типовую задачу - напишу пример. если инденты через это дело пролезут (попробуем PRE)
class Example:
    def __init__(self, param):
        self.param = param

Пролезли.

мне самому было бы интересно написать некую апологию Питона (в этом, видимо, моя практическая цель) просто, чтобы аргументы в пользу не широкоизвестного языка были обкатаннее и убедительнее.

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

> Ява - это самая высокая горка, на которую было реально затащить человечество, не растеряв по дороге 90%. Это ни хорошо, ни плохо - это таковы сегодня люди.

О, это я очень хорошо понимаю. И за это очень Яве, как явлению, благодарен. После Явы и перла, на людей, пишущих на Питоне смотрят как на гораздо меньших придурков, чем до их появления. Я на Яве не очень много писал, так, больше пробовал. Апплет написал, когда Ява была в стадии alpha 2, еще что-то для Palm - есть такая VM - Waba. Маленькие вещички с простой графикой удобно писать. А большие - не приходилось, хотя код чужой разглядывал. Вещи типа EJB меня просто пугают, как в свое время MFC. Но, как я понял, вы не большой сторонник всего этого J2EE.

А про Смолток - у меня свой таракан в голове. И вообще, я больше в последнее время к фунциональному стилю склоняюсь. На Питоне это (с некоторыми небольшими ограничениями) вполне можно. Хотел попробовать Хаскель, но там пока текст скомпилируется (вернее, протайпчекится) с тебя семь потов сойдет.
Радует, что в Гугле интенсивно на Питоне пишут. Пустячок, а приятно, опять же - популяризуют Питон.

Кстати, (или уж совсем некстати), ваш Фантом (огрызок мечты) совсем уже заглох? Не хотите линк на форум на dz.narod.ru хоть в ЛЖ переставить (старый не работает)? Или совсем не до того? И еще, известен ли вам проект eros-os.org? Многое похоже, но проект, хоть и академический, и даже вроде финансируемый тоже как-то заглох. Не дождется человечество исполнения мечт, видимо.

Date: 2004-12-23 12:29 pm (UTC)
From: [identity profile] dz.livejournal.com
EJB почти что признан неуспешным, у меня такое ощущение складывается.

А Фантом - http://dz.freezope.org/phantom/FrontPage - но там всё то же самое, только англ.

Я делал три попытки :), последняя дала работающий интерпретатор байткода, "ассемблер" байткода и hello world. Но это даже не основа - это экспериментальный стенд. К нему надо привинчивать язык, смотреть на проблемы и половину переделывать. Тварюшка умеет собрать из методов класс, родить объект этого класса, позвать метод, словить эксепшн, вот и всё - даже про наследование ничего не знает толком. Плоско-объектная.

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 02:45 am
Powered by Dreamwidth Studios