Сергей Губанов wrote:
> C>Тогда С — это объектно-ориентированый язык. В нем можно организовать > C>полиморфизм с помощью vtable'ов (что и делается в COM, кстати). > Возможность реализовывать один лишь только динамический полиморфизм не > достаточно для того чтобы называть язык ОО-языком. > Разница между Си и Обероном с точки зрения ООП состоит в том, что: > 1) *Наследование*: В Си тип struct расширять нельзя, а в Обероне тип > RECORD расширять можно.
Неверно. В C можно расширять тип struct:
struct tagStruct
{
int a,b;
} Struct;
struct tagStruct2
{
Struct parent;
int c,d;
} Struct2;
Теперь делаем так:
Struct2 *ptr=....; //Создаем экземпляр Struct2 каким-то образом
Struct *ptr2=ptr; //И это правильный код!
> 2) *RTTI*: Коль скоро в Обероне есть механизм расширения типов, то > есть и (эффективный) механизм динамического определения типа > >IF obj IS SomType THEN obj(SomType).field := 2.718 END > >
> Еще следует добавить, что Оберон строго типизированный язык. Попытки > заведомо не правильного приведения типов пресекаются еще на стадии > компиляции. А в языке Си компилятор так сильно за типами не следит.
И что? На объектную ориентированость это никак не влияет.
Здравствуйте, VladD2, Вы писали:
L>>Был такой язык Clipper, мир праху его.
VD>Справидливости ради, в Клипере 5 вроде как ООП ввели полноценно. Но кому он был в это время уже нужен?
Если память мне не изменяет, то в Clipper 5.0 были добавлены несколько объектов: TBrowse и еще два или три. Но ООП там так и не появились.
Сергей Губанов wrote:
> C>Неверно. В C можно расширять тип struct: > Ну так — грязный хак во всей красе
Это не хак, а фича. Причем явно прописаная в Стандарте на язык С.
> А можно Вас попросить, если это Вас не затруднит, показать текст > процедуры QueryInterface, а также описание использованных здесь типов?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Cyberax, Вы писали:
C>>Это не хак, а фича. Причем явно прописаная в Стандарте на язык С.
L>А разве компилятор не может изменить физичекий порядок следования полей в структуре?
Нет. Стандарт C99, 6.7.2.1/13
Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[15]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, AVC, Вы писали:
AVC>Ну, Дейкстру теперь мало кто читает. Писал он об иерархии абстрактных машин и даже реализовал на основе этой идеи операционную систему THE.
Это все же совсем другое.
AVC>Другой, и более близкий, пример — паскалевский P-код. Тот же Гослинг в 1970-е годы занимался именно паскалевским P-кодом.
А это вообще из другой оперы. Виртуальная машина и даже байткод в управляемых средах имеют совершенно другое назначение нежели Пи-код.
AVC>Оберон первый смог свести "концы с концами", гармонично соединив главные идеи в одно целое.
Расскажи за проблему решил Оберон? Была ли вообще проблема требующая решения? Или все же речь идет о гормонином сочетании фич. Если последнее, то оберон всего лишь один из ряда, и явно не самый удачливый. Если бы Оберон был удачным решением, то Ява просто не появилась бы на свет. В Сане просто напроста взяли бы Оберон.
AVC>Чего, повторяю, до него не было.
Каждый создатель языка считает, что его детище уникально и круче паравоза. И саздаются языки именно потому, что их авторы считают, что имеющиеся языки не гармоничны. Зачем по-твоему Сану и МС было затевать собственные разработки если бы Оберон оказался таким каковым его считает Вирт и вы с Губановым?
AVC>Поэтому Оберон — именно "классический", а не "экспериментальный" (вроде экстремального Смолтока) язык.
Смолток падарил миру программирования кучу новых идей. Оберон не дал ни одной. Традиционные вещи конечно можно называть классикой, но для этого они должны ко всему прочему быть популярными.
Виртовский же язык тоже был эксперементом цель которого была посмотреть на то можно ли создать полноценный язык программирования путем выкидывания, а не добавления. В этом смысле эксперемент оказался удачным. Такой язык создать можно. Вот только востребованность такого языка явно стреится к нулю.
AVC>"Экспериментальные" языки стремятся не к сбалансированности и практичности, а к тому, чтобы все построить на основании нового "чудодейственного" средства (ООП, ФП и т.д.)
Эксперементальные языки бывают разными. Бывают шуточными вроде БрэйнФака. Бывают практичными и сбалансированными вроде Руби. Бывают экзотическими и дерзкими вроде Смолтока. А бывают спартанскими вроде Оберона. На то они и эксперементы, чтобы проверять свои идеи. И вообще, любая классика когда-то была эксперементом. Так что классикой становятся удавшиеся эксперементы. Оберону классикой никогда не стать. Разве что ереходным звеном.
Кстати, вот синтаксис МЛ-я и Питона, как не смешно это звучит начинает по-тихоничку становиться классическим. Все больше и больше новых языков вбирают из них многие конструкции. Все эти def[ine]-ы и безымянные функции явно приживаются и становятся классическими конструкциями. А вот минимализм явно не приживется никогда. Язык должен быть выразительным. Простота же достигается логичностью выразительностью сложных констукций. Например, foreach намного проще воспринимается людьми нежели минималистские for-ы и while-ы. От того они потихоничку прорываются во все языки. Даже в плюсы и те хотя добавить аналог foreach-а.
AVC>Т.е. Си++ — сложнее и запутаннее почти всех других языков? Не спорю.
С++ на самом деле не так уж сложен с точки зрения синтаксиса. Тот же C# в разы его сложнее (особенно 3.0). С++ подводит другое. Многие его конструкции запутаны в следствии неоднозначностей и не понятности на интуитивном уровне. К тому же дает о себе знать наследие С.
Мне вот другое интересно. Старонники Оберона стремясь доказать его приемущества все время пытаются сравнивать Оберон с С++. Причем делают это только там где С++ действительно слабее. Но ведь есть языки и помимо С++, да и в С++ есть вещи вроде обобщенного программирования и метапрограммироания. Почему бы не сравнить Оберон с ними? Или не хочется обращать внимание нанедостатки?
AVC>Вирт стремился не к минимализму в синтаксисе как таковому, а к максимальной простоте и ясности в программировании.
Отнюдь. Вот создатели C#, Руби и VB действительно каждый по-своему к этому стремились. Причем они понимали, что минимализм и простота использования разные вещи. Для того чтобы язык был проще в него наоборот ввели "лишние" конструкции вроде foreach. Такие конструкции позволяют выражать мысли значительно проще. При этом код не тольк проще писать. Что намного важнее его проще воспринимать.
AVC>Минимализм в синтаксисе служит именно этим целям, будучи весьма удобным и практичным.
Это очень большое заблуждение. Иначе самым простым языком был бы имено БрэйнФак. В нем же всего 4 (или сколько там) конструкции!
AVC>Утверждаю это на основании сравнения своего собственного опыта на Си++ и Обероне.
А ты срани свой любимый Оберон не с корявым С++, а с C# 2.0 или с Руби. Причем не просто полистав документацию, а попрограммировав на этих языках.
AVC>>>По-моему, я ясно назвал Смоллток антипримером.
VD>>Где? И почему? Как раз все перечисленное в нем уже было.
Все же очень хотелось бы услышать подробное объяснение почему Смолток является антипаттерном. Я не в восторге от этого языка за его экстравогантный синтаксис и ориентацию на динамическую типизацию, но все же не понимаю почему в данном случае он атипаттерн. Ведь именно в нем появлись все перечисленные возможности.
AVC>Сопоставь два своих утверждения: о динамической типизации в Смолтоке (определеннее: статической типизации нет вообще) и о том, что в нем нет проблем с безопасностью типов.
Уууу... И ты с такими дырами в базовых знаниях берешся за сравнение языков и определение первенства среди них?
Нда, беда (с).
AVC>А затем объясни, пожалуйста, какая может быть безопасность типов в языке, в котором типов все равно что нет.
После детального изучения этих сатей ты поймшь, что динамическая типизация и ее отсуствие это не одно и тоже. И что плохая статическая типизация (напримем в С, особенно в раннем), намного хуже хорошей динамической (например в Смолтоке). А так же возможно поймешь, что динамическая типизация имеет как плюсы, так и минусы. Главный плюс динамической типизации — это очень гибкий полиморфизм. В статически типизированных языках полиморфизм далек от гибкости, так что его развивают разыми средствами. Самое эффекнивное из которых добавление статического полиморфизма. Например, в С++ с этой целью добавили макросы. А в C# и Яву джереники. Самым мощным наверное является подход МЛ-я и его клонов. Там полимпофизм очень похож на полиморфизм динамически типизировнных языков, но при том он все же статический. Оберон же в этом отношении сильно обделен. В нем нет статического полиморфизма, да и динамический то как бы придела к языку сбоку.
AVC>>>Конкретнее, пожалуйста. В чем совпали мысли авторов Явы, Дельфи, Шарпа, Ди?
VD>>Автоматическое управление памятью, безопастность типов (Ди тут чуть в стороне, но все же).
AVC>Какие прозорливцы создатели этих языков! Куда до них Вирту!
Ты хотя бы понял, что я перечислил те идеи которые совпали с теми что Вирт удосужился включить в Оберон?
А идеи эти придуманы задолго до появления всех этих языков. Они были уже Лиспе и Смолтоке. Так что вирт эти идеи позаимствовал. Вот в Паскале он идею безопастности типов использвал одним из первых. Хотя опять же в Лиспе она уде была, а он лет эдак на 15 по страше.
AVC>Совпадение в этом отношении (автоматическое управление памятью и безопасность типов) с Обероном — чистая случайность, конечно.
Может быдушь слидить за дискуссией? Напомню. Я сказал следующую фразу:
А то что некоторые их мысли совпали говорит о том, что у них у всех были правильные мысли.
Возможно ты не понял, то речь шала о том, что создатели этих языков совпали во мнении с Виртом о том, что современный язык должен поддерживать некоторые фичи.
AVC>Во-первых, Оберон — не примитивный, а очень выразительный язык.
Именно что примитивный. Причем сознательно. Количество конструкций настолько мало, что выразительность сильно страдает. На то что в других языках достаточно пары слов в Обероне нужно наваять кучу кода.
AVC>Синтаксический минимализм здесь очень важен: каждая конструкция несет свою уникальную синтаксическую нагрузку, намерения программиста сразу понятны (при чтении программы).
Да как же намерения будут понятны, если сначала в коде нужно распознать более высокоуровневые паттерны вроде перебора коллекции?
Ты вообще не видишь дичайшей алогичности своих рассуждений? "минимализм важен"..."кострукция несет нагрузку"..."намерения понятны". Где связь между этими утверждениями? Вот обратное как раз довольно очевидно. Меньшее количество кострукций приводит к большему их объему в коде. Большой объем коснтукций приводит к усложнению понимания намерений программиста. Ну, а то что "каждая конструкция несет свою уникальную синтаксическую нагрузку" это конечно бесспорно, как и бессмысленно в контексе данных рассуждений.
AVC>Что касается ":=", то признай, что ты не смог подобрать примера опечатки с ":=". Я все прощу!
Понимашь ли, чтобы понять другого человека нужно:
1. Хотеть его понять.
2. Обладать набором базовых знаний в обсуждаемом вопросе.
Ты не обладашь ни одним из этих качств. Потому обяснить тебе даже такие примитивные вещи нельзя.
Если ты уже прочел приведенные ссылки на вики, то я еще раз попытаюсь объяснить обсурдность борьбы за ":=".
Итак, для человека соврешенно все равно каким знаком обозначается некоторое дейсвтие. Чем более привчен знак тем лучше, так как адаптация будет легче. Знак "=" неплохо отражает суть операции и привычен так как именно его все использвали в школе.
Так вот, исходя из этой предпосылки получается что единственная проблема оператора "=" в С/С++ = это то, что есть другой оператор содержащий тот же символ, но использующийся по другому. Собственно проблема в том, что человек может опечататься и не заметить этого. Понятно, что можно опечататься как при наборе "==", так и при наборе ":=". Если человек опечатается в месте где синтаксис языка не допускает использования "=", то проблем не возникнет, так как компилятор/интерпретатор обнаружит несоотвествие и сообщит об ошибке. Если же в контексте допустимы оба ператора (например, "=" и "==" или "=" и ":="), то появляется поле для "граблей". Ошибка может быть попросу не замечина и приводить не сообщению о ней, а к невреному поведению программы (несоотвествию ожиданиям).
Так вот, дело в том, что Вирт как неразумное дитя тычит пальцем во второе "равно" и громко, так, заявляет, что это нелогично... (далее масса эпитетов), в общем дело мол в нелогичном использовании "=". Между тем дело не в этом. Дело именно в допустимости похожей конструкции. И проблему эту можно решить двумя путями...
Первый путь — это запретить присваения внутри выражений. Ведь проблема проявляется только в этом случае. Таким путем пошли Руби и многие другие языки.
Второй путь — повысить строгость типизации, а конкретно — запретить автоматическое приведение чего бы то нибыло к булевому типу. Это привдет к тому, что незамеченными останутся только опечатки в выражениях с булевыми типами, но сравнение булевых типов — это мякго говоря идеотизм, так как предикаты уже придекаты и формировать из них новые путем сравнения смысла нет. В остальных же случаях тип получаемый в результате присвоения значения не будет булевы и если программистп опытается использовать его в булевом выражении (напрмер в if-е, компилятор выдаст сообщение об ошибке). Таким путем пошел C#.
Оберон же пошел перым путем попросту запретив присваения в выражениях.
Что касается оператора ":=", то Вирту просто хочется видить привчный именно ему оператор, и так как никаких разумных обоснований этому капризу нет, то начинает откровенную демагогию про "не естественность" использования "=" в присвоениях.
Понятнее я уже не могу объяснить. Если и это не понятно, то лучше не развивать этот спор, так как это уже совершенно бесцельное занятие.
AVC>Где??!
Ну, например, в МЛ есть и ЖЦ, и сильная статическая типизация. Что там у Вирта еще уникального было?
AVC>Паскаль внес хоть что-то новое. Оберон же ничем не отличается от C# с точки зрения новизны. А по удобству и популярности Оберон вообще ни с кем сравниться не может, так как их в микроскоп не разглядеть.
AVC>Да, логика непобедимая.
Потому что верная.
AVC>Оберон (1988) ничем не отличается от C# (2000?) с точки зрения новизны.
Ага. Все идеи, ну, кроме того что "в такой" комбинации они есть только в этих языках, ни в Обероне, ни в C# нет.
AVC>А может, все-таки, наоборот?
Можно и наоборот. Ни в C#, ни в Обероне нет ни одной придуманной для этго языка идеи. Они воплощают давно известные мысли других людей соеденяя их в уникальную комбинацию.
Не будешь же ты утвержать, что C# не является уникальным набором известных идей? Ведь от Оберона он отличается и довольно сильно. Да и от Явы. Так что он уникален, но ничего нового он в индустрию не привнес.
Кстати, чем дальще мем меньше вероятноать появления новых идей. Уж слишком много их уже придумано. Однако комбинаций их может быть неисчислимое множество. Это как с нотами. Всего семь нот, но люди вот вже тысячи лет не могут исчерпать запас их возможных комбинаций приводящих к тому что мы называем музыкой.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, jazzer, Вы писали:
AVC>>И почему же, по Вашему, разработчики Явы не ввели это замечательное свойство в свой язык? AVC>>Или они просто неисправимые халтурщики, и решили "сдать" язык с "недоделками". Мол, и так сойдет?
J>Именно так. Т.е. не халтурщики, а люди, которых сильно напрягли со сроками.
Я пока скромно замечу, что Ваш аргумент совершенно несовместим с аргументом Евгения (eao197), о том, что Java была готова уже давно и использовалась в проекте Star7.
Вот история, пересказанная Евгением: http://www.rsdn.ru/Forum/Message.aspx?mid=1406278&only=1
Даже фигурируют спецификации... 1994 года. (Мол язык был, да вот только спецификации куда-то затерялись. )
Все эти истории от "создателей Явы" странные и сами по себе, но главное — противоречат одна другой.
J>Java появилась на моих глазах и я читал о ней самые что ни на есть первоисточники (т.е. создателей языка). J>Так вот то, что они рассказали про историю языка, и тот уровень аргументации, которую они приводили в пользу отсутствия тех или иных фич, которые есть в С++ (про перегрузку операторов там вообще просто песня была), оставила у меня именно такое впечатление: сроки поджимали, выпуск продукта больше задерживать было нельзя.
Интересно, а почему так торопились разработчики Явы? С кем они гнались наперегонки?
Знаете ли Вы какие-нибудь разработки, конкурировавшие тогда с Явой в области ее применения?
Ведь очень интересная картина: люди отчаянно спешат, портят из-за этого язык (который должен стать их "брэндом"!). Неужели без причины?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[12]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, Зверёк Харьковский, Вы писали:
AVC>>Тщательное изучение компилятора Оберона в Sun ни для кого не секрет. AVC>>И — ни слова! AVC>>Зато — "моя заслуга". AVC>>Ну-ну.
ЗХ>Виноват, это проблема моего перевода на ходу. В оригинале он выражается не так хвастливо: "What I do, was..." — то есть верный перевод — "Все что я сделал — просто объединил эти языки".
Как было сказано в каком-то фильме — "та же фигня". Смысл этих выражений один и тот же.
Просто не Гослинг это сделал. А в каких выражениях он об этом говорит (а говорит он частенько в выражениях хвастливых и рекламных) — дело второе.
ЗХ>Но про Оберон они действительно ни слова не говорят (что меня лично удивило, но обратите внимание на мою сноску об "относительной достоверности источников").
Если Вас это удивило, то Вы — наивный (в хорошем смысле) человек.
Я Вам скажу, почему Оберон не упоминается. Это противоречило бы всей рекламной кампании Sun, прошедшей под лозунгом "Нигде кроме, как в Моссельпроме" , утверждающей, что Ява — абсолютно новая разработка, не имеющая аналогов.
ЗХ>ЗЫ: а вообще — я бы не был так категоричен в отыскании корней. Идеи "носятся в воздухе" — обсуждаются, пересказываются, творчески перерабатываются, десятки раз изменяются и т.п. Попытка свести все к "такой-то увидел то-то и упер", как правило, слишком все упрощает.
Доказательство теоремы Ферма "носилось в воздухе" больше трехсот лет.
Но доказал ее конкретный человек.
Потратив на это 25 лет.
Пойдемте и скажем ему, что это (потраченная жизнь) не важно. Ведь идеи "носились в воздухе"!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[16]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, VladD2, Вы писали:
AVC>>Другой, и более близкий, пример — паскалевский P-код. Тот же Гослинг в 1970-е годы занимался именно паскалевским P-кодом.
VD>А это вообще из другой оперы. Виртуальная машина и даже байткод в управляемых средах имеют совершенно другое назначение нежели Пи-код.
Правда? Совершенно другое? Ну ни капельки не похоже, да?
А как же знаменитое
Write once, run everywhere
?
AVC>>Оберон первый смог свести "концы с концами", гармонично соединив главные идеи в одно целое.
VD>Расскажи за проблему решил Оберон? Была ли вообще проблема требующая решения? Или все же речь идет о гормонином сочетании фич. Если последнее, то оберон всего лишь один из ряда, и явно не самый удачливый. Если бы Оберон был удачным решением, то Ява просто не появилась бы на свет. В Сане просто напроста взяли бы Оберон.
Что они и сделали, предварительно исковеркав язык, чтобы выглядеть новаторами.
Насчет Смолтока я, возможно, погорячился. Подумаю.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[13]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, AVC, Вы писали:
AVC>>>И почему же, по Вашему, разработчики Явы не ввели это замечательное свойство в свой язык? AVC>>>Или они просто неисправимые халтурщики, и решили "сдать" язык с "недоделками". Мол, и так сойдет?
J>>Именно так. Т.е. не халтурщики, а люди, которых сильно напрягли со сроками.
AVC>Я пока скромно замечу, что Ваш аргумент совершенно несовместим с аргументом Евгения (eao197), о том, что Java была готова уже давно и использовалась в проекте Star7. AVC>Вот история, пересказанная Евгением: AVC>http://www.rsdn.ru/Forum/Message.aspx?mid=1406278&only=1
AVC>Даже фигурируют спецификации... 1994 года. (Мол язык был, да вот только спецификации куда-то затерялись. ) AVC>Все эти истории от "создателей Явы" странные и сами по себе, но главное — противоречат одна другой.
Я пока скромно замечу ( ), что не противоречит. У меня у самого от Java такое же впечатление, как у Jazzer-а.
Имхо, Грослинг и компания просто не смогли сделать в Java то хорошее, что было в C++. Та же перегрузка операторов, шаблоны или полноценная поддержка множественного наследования. За это я Java и не люблю. И пользоваться мне Java поэтому не удобно.
Я как-то делал в своей СУБД поддержку множественного наследования (с виртуальным множественным) -- это сложно и трудоемко. А ведь для языка программирования это всего лишь один фрагментик.
. А вот если бы Франц прочел эту лекцию года на три раньше...
J>>Java появилась на моих глазах и я читал о ней самые что ни на есть первоисточники (т.е. создателей языка). J>>Так вот то, что они рассказали про историю языка, и тот уровень аргументации, которую они приводили в пользу отсутствия тех или иных фич, которые есть в С++ (про перегрузку операторов там вообще просто песня была), оставила у меня именно такое впечатление: сроки поджимали, выпуск продукта больше задерживать было нельзя.
AVC>Интересно, а почему так торопились разработчики Явы? AVC>С кем они гнались наперегонки?
Думаю, сами с собой. В исследовательских проектах (каким был Green Project) самое главное -- суметь отказаться от грандиозных всеобъемлющих планов и уложиться в сроки и бюджеты хотя бы с чем-нибудь работающим.
AVC>Знаете ли Вы какие-нибудь разработки, конкурировавшие тогда с Явой в области ее применения?
А какая у Java тогда планировалась область применения? Сомневаюсь, что в 92-м году идеи j2ee уже витали в воздухе.
AVC>Ведь очень интересная картина: люди отчаянно спешат, портят из-за этого язык (который должен стать их "брэндом"!). Неужели без причины?
К сожалению, так очень часто бывает. Я вот у себя в ObjESSty дальше 2-й беты двинутся не могу -- нет физических возможностей. Хотя задумок было ой как много. Se la vi.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
P>Если память мне не изменяет, то в Clipper 5.0 были добавлены несколько объектов: TBrowse и еще два или три. Но ООП там так и не появились.
В 5.2 был недокументированный и достаточно убогий способ создавать свои обьекты — но я не видел чтобы им кто-то реально пользовался. Помнится, реализовывал полиморфизм через массивы (структуры Clipper не поддерживал) и "блоки кода" (как своеобразные указатели на функции). В целом это работало, но назвать после этого Clipper обьектно-ориентированным языком — увольте...
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[14]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, eao197, Вы писали:
AVC>>Все эти истории от "создателей Явы" странные и сами по себе, но главное — противоречат одна другой.
E>Я пока скромно замечу ( ), что не противоречит. У меня у самого от Java такое же впечатление, как у Jazzer-а.
Евгений, ну как же не противоречат?!
То утверждается, что на этом языке уже был завершен проект в 1992 году (а спецификации — корова съела), то говорится, что язык и к осени 1995 года сделать не успели. Ограничились, мол, каким-то "обрубком".
E>Имхо, Грослинг и компания просто не смогли сделать в Java то хорошее, что было в C++. Та же перегрузка операторов, шаблоны или полноценная поддержка множественного наследования. За это я Java и не люблю. И пользоваться мне Java поэтому не удобно.
За это ты бы, наверное, и Оберон не любил (если бы писал на нем).
Но ведь эти свойства не случайны, а закономерны.
Шаблоны, например, трудно (если возможно) запихнуть в компонентное программирование.
Перегрузка операторов — вредна (ИМХО). В Оберон (за исключением "подлого изменника" Oberon X ) она не включена принципиально.
Множественное наследование, ИМХО, плохо совмещается с точной сборкой мусора и эффективным динамическим определением типа. (К тому же, в модульных языках в нем вообще нет потребности.)
E>А мой аргумент относился именно к лекции Франца. Именно тогда, когда Франц ее читал, вносить изменения в Java было уже поздно. Что и подтвердил Зверек: Re[9]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
. А вот если бы Франц прочел эту лекцию года на три раньше...
14 месяцев — огромный срок!
Весь Оберон (язык, компилятор, ОС, редактор, др., книга) был сделан за 2,5 года двумя людьми в размеренном темпе, причем у них были и другие обязанности (все-таки Вирт тогда еще и профессором ETH был).
А здесь такая корпорация, да еще не на пустом месте! Да еще в таком угаре (судя по утверждениям jazzer).
В начале 1994 года Франц читает лекцию, после этого принимается решение о переориентации Java на Интернет, а потом наблюдается уже упомянутая спешка.
J>>>Java появилась на моих глазах и я читал о ней самые что ни на есть первоисточники (т.е. создателей языка). J>>>Так вот то, что они рассказали про историю языка, и тот уровень аргументации, которую они приводили в пользу отсутствия тех или иных фич, которые есть в С++ (про перегрузку операторов там вообще просто песня была), оставила у меня именно такое впечатление: сроки поджимали, выпуск продукта больше задерживать было нельзя.
AVC>>Интересно, а почему так торопились разработчики Явы? AVC>>С кем они гнались наперегонки?
E>Думаю, сами с собой. В исследовательских проектах (каким был Green Project) самое главное -- суметь отказаться от грандиозных всеобъемлющих планов и уложиться в сроки и бюджеты хотя бы с чем-нибудь работающим.
Определенно, Java не была исследовательским проектом, в отличие от Оберона.
Это именно "рыночный" проект.
AVC>>Знаете ли Вы какие-нибудь разработки, конкурировавшие тогда с Явой в области ее применения?
E>А какая у Java тогда планировалась область применения? Сомневаюсь, что в 92-м году идеи j2ee уже витали в воздухе.
Могу сказать, что почти сразу после Java стал доступным Juice, сделанный всего одним человеком (Францем).
Так что причины спешить все-таки были.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[15]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, AVC, Вы писали:
E>>Я пока скромно замечу ( ), что не противоречит. У меня у самого от Java такое же впечатление, как у Jazzer-а.
AVC>Евгений, ну как же не противоречат?! AVC>То утверждается, что на этом языке уже был завершен проект в 1992 году (а спецификации — корова съела), то говорится, что язык и к осени 1995 года сделать не успели. Ограничились, мол, каким-то "обрубком".
Ну так и есть. Делали Oak. Чтобы Green Project не стал долгостроем выбросили из него все, что было хорошего в C++. Затем осознали, что получилось. Решили продвигать в массы. Может быть, что-то подправили в языке, хотя особенно уже и времени не было. Потому что нужно было JDK клепать. И какие-то приложения вокруг Java (ведь тогда, как мне помнится, откуда-то какие-то JavaOS расплодились). Ну некогда, имхо, им было Oak до "ума" доводить. Так же, как и прогрессивную идею Франца внедрять. Потому, что релиз на носу был. Да и возможно, переносился не один раз.
А то, что обрубком, так первая Java такой и была. Те же самые generic-и, которые на тот момен уже были в C++ в виде шаблонов, появились только спустя лет семь после первой Java.
E>>Имхо, Грослинг и компания просто не смогли сделать в Java то хорошее, что было в C++. Та же перегрузка операторов, шаблоны или полноценная поддержка множественного наследования. За это я Java и не люблю. И пользоваться мне Java поэтому не удобно.
AVC>За это ты бы, наверное, и Оберон не любил (если бы писал на нем).
Вряд ли. Мне Паскаль нравился. Правда Object Pascal уже нет.
AVC>Но ведь эти свойства не случайны, а закономерны. AVC>Шаблоны, например, трудно (если возможно) запихнуть в компонентное программирование.
VladD2 уже про это разсказал.
AVC>Перегрузка операторов — вредна (ИМХО). В Оберон (за исключением "подлого изменника" Oberon X ) она не включена принципиально. AVC>Множественное наследование, ИМХО, плохо совмещается с точной сборкой мусора и эффективным динамическим определением типа. (К тому же, в модульных языках в нем вообще нет потребности.)
Плохо, это значит "сложно"? Или принципиально невозможно?
E>>А мой аргумент относился именно к лекции Франца. Именно тогда, когда Франц ее читал, вносить изменения в Java было уже поздно. Что и подтвердил Зверек: Re[9]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
. А вот если бы Франц прочел эту лекцию года на три раньше...
AVC>14 месяцев — огромный срок! AVC>Весь Оберон (язык, компилятор, ОС, редактор, др., книга) был сделан за 2,5 года двумя людьми в размеренном темпе, причем у них были и другие обязанности (все-таки Вирт тогда еще и профессором ETH был).
Ну чего тут скажешь? Если судить по результатам, то мы сейчас выясняем, не взял ли суперпопулярный язык Java чего-нить тайком у малоизвестного Oberon-а? Может время разработки здесь по другому стоит оценивать?
Вот Вирт с другом слабали для себя инструмент, который был очень удобен им самим, да и склепали на нем в свое удовольствие и ОС, и редактор, и кучу компонент. Проблема, вероятно, была в том, что эти люди думали совсем по другому, чем остальные. В результате их язык для большинства казался и кажется неудобным.
Может в Sun была другая ситуация. Может там потратили 90% времени на создание языка, который будет понятен и удобен 80% разработчиков?
AVC>А здесь такая корпорация, да еще не на пустом месте! Да еще в таком угаре (судя по утверждениям jazzer). AVC>В начале 1994 года Франц читает лекцию, после этого принимается решение о переориентации Java на Интернет, а потом наблюдается уже упомянутая спешка.
Возможно, спешка была и до 1994 года. Либо после завершения Green Project до исторического решения Джоя на переориентацию Java вообще был полный застой и Java не развивалась вовсе. А когда Джой сказал, что Java в интернете быть, то и работа закипела.
E>>Думаю, сами с собой. В исследовательских проектах (каким был Green Project) самое главное -- суметь отказаться от грандиозных всеобъемлющих планов и уложиться в сроки и бюджеты хотя бы с чем-нибудь работающим.
AVC>Определенно, Java не была исследовательским проектом, в отличие от Оберона. AVC>Это именно "рыночный" проект.
Java -- нет, а вот Oak, в котором ядро Java сформировалось -- был.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, VladD2, Вы писали:
VD> В Сане просто напроста взяли бы Оберон.
Блин, так они же его и взяли! Только выбросили value-типы и осквернили Си-образным синтаксисом.
VD> На то что в других языках достаточно пары слов в Обероне нужно наваять кучу кода.
Вообще-то, Обероны еще славятся тем, исходный код операционных систем написанных на них имеет очень мало строчек кода по сравнению с операционными системами написанными на Си/Си++. Несколько тысяч строчек кода супротив нескольких сотен тысяч или даже нескольких миллионов строчек кода. Так что может быть где-то и в чем-то на Оберонах и надо чуток побольше написать, но на больших масштабах (например, операционки — это же большие масштабы) в среднем писанины во много раз меньше.
VD>Так вот, дело в том, что Вирт как неразумное дитя тычит пальцем во второе "равно" и громко, так, заявляет, что это нелогично... (далее масса эпитетов), в общем дело мол в нелогичном использовании "=". Между тем дело не в этом. Дело именно в допустимости похожей конструкции. И проблему эту можно решить двумя путями...
1) Описать эту проблему в стандарте. (Си-онисты)
2) Признаться и исправить допущенную ошибку. (Вирт)
Re[17]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Сергей Губанов wrote:
> VD> На то что в других языках достаточно пары слов в Обероне нужно > наваять кучу кода. > Вообще-то, Обероны еще славятся тем, исходный код операционных систем > написанных на них имеет очень мало строчек кода по сравнению с > операционными системами написанными на Си/Си++.
И соответственно меньше функций.
> Несколько тысяч строчек кода супротив нескольких сотен тысяч или даже > нескольких миллионов строчек кода. Так что может быть где-то и в > чем-то на Оберонах и надо чуток побольше написать, но на больших > масштабах (например, операционки — это же большие масштабы) в среднем > писанины во много раз меньше.
Агащаз. Покажите операционку, которая сравнится с Линуксом по фичам. А
мы сравним исходники.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[20]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Здравствуйте, Cyberax, Вы писали: C>Только вот программа на ассемблере не будет выполняться на другой C>архитектуре. А вот программа на С — будет.
Гм. А не на Альфе ли мы гоняли стандартный solitair.exe в режиме эмуляции x86?
... << RSDN@Home 1.1.4 stable rev. 510>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
Sinclair wrote:
> C>Только вот программа на ассемблере не будет выполняться на другой > C>архитектуре. А вот программа на С — будет. > Гм. А не на Альфе ли мы гоняли стандартный solitair.exe в режиме > эмуляции x86?
А на NT для PPC (в просторечии — "пипец") не получилось бы
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[22]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005