Re[16]: Справка
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 05.10.05 15:11
Оценка:
Здравствуйте, eao197, Вы писали:

E>Ага, всего лишь есть поддержка ООП средствами языка, или нет ее.


Если "ООП = виртуальные функции", то Вы правы. Но я так не считаю. Динамический полиморфизм можно реализовывать по разному и виртуальные функции лишь один из способов.
Re[15]: Примеры
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.10.05 15:12
Оценка: +1
Здравствуйте, Сергей Губанов

Ну вот, стало понятно.

Только это больше напоминает не новый синтаксис, а анотации методов в Java/C# и ассемблерные вставки в C++.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Справка
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.10.05 15:13
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

E>>Ага, всего лишь есть поддержка ООП средствами языка, или нет ее.


СГ>Если "ООП = виртуальные функции", то Вы правы. Но я так не считаю. Динамический полиморфизм можно реализовывать по разному и виртуальные функции лишь один из способов.


Нет, разница в том, реализую ли я полифорфизм вручную, или же за меня это делает язык/компилятор.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[28]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: Lloyd Россия  
Дата: 05.10.05 15:27
Оценка: :))) :)))
Здравствуйте, ironwit, Вы писали:

Д>>Да я вот и сравнил. C# 2.0 — 115 страницы, C++ — 776 страниц. Спека по C++ к тому же далеко не самая свежая. И где ты тут усмотрел, что у C# она "не меньше"?

I>а кто подскажет откуда можно с++ спецификацию посл. скачать? так сказать почитать на сон грядущий

Не проснуться не боишься?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[17]: Справка
От: Cyberax Марс  
Дата: 05.10.05 15:38
Оценка: +2
Сергей Губанов wrote:

> E>Ага, всего лишь есть поддержка ООП средствами языка, или нет ее.

> Если "ООП = виртуальные функции", то Вы правы. Но я так не считаю.
> Динамический полиморфизм можно реализовывать по разному и виртуальные
> функции лишь один из способов.

Тогда С — это объектно-ориентированый язык. В нем можно организовать
полиморфизм с помощью vtable'ов (что и делается в COM, кстати).

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[17]: Справка
От: Left2 Украина  
Дата: 05.10.05 15:58
Оценка:
СГ>Если "ООП = виртуальные функции", то Вы правы. Но я так не считаю. Динамический полиморфизм можно реализовывать по разному и виртуальные функции лишь один из способов.

Был такой язык Clipper, мир праху его.
Так вот, на нём тоже можно было сэмулировать виртуальные функции примерно с такой же дозой извращений. Я так понимаю, после этого Clipper можно смело зачислять в славные ряды обьектно-ориентированных языков?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[9]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: jazzer Россия Skype: enerjazzer
Дата: 05.10.05 16:06
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Здравствуйте, jazzer, Вы писали:


AVK>>>>В Java есть множественное наследование интерфейсов.

AVC>>>Эта идея в Java действительно новая и, похоже, неплохая.

J>>Да, ребята...

J>>Без комментариев

AVC>А к чему такая скрытность? :)

AVC>Я имел в виду, что ни в Обероне, ни в Си++, ни в других известных мне популярных языках наследование интерфейса не было синтаксически отделено от наследования реализации.

Да потому что это нафиг не нужно, если есть полноценное множественное наследование.

А синтаксическое разделение имеет ту же ценность, что и синтаксическое разделение в Паскале процедур и функций по возврату.
В Обероне почему-то от этого разделения ушли в сторону унификации, принятой в С. С чего бы это?

Так что то, что в java есть синтаксическое разделение, объясняется исключительно отсутствием полноценного множественого наследования, а оставлять язык совсем без множественого наследования было бы уже совсем неприемлемо — никто бы им не пользовался.

Так что называть недоработки Java новой (!) и неплохой фичей — уж увольте. Особенно в части новизны.
Если хотите, множественное наследование интерфейсов было в винде в COM тыщу лет уж как.
И в IDL также.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[9]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: Igor Trofimov  
Дата: 05.10.05 18:13
Оценка:
AVC>SYSTEM — не отдельный модуль, а возможность доступа к низкоуровневым средствам языка.
AVC>ИМХО, такое явное обособление низкоуровневых средств языка очень полезно.

Так... погодите.. где-то я это уже...
unsafe 
{
...
}
Re[18]: Справка
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.10.05 20:26
Оценка: :)))
Здравствуйте, Cyberax, Вы писали:

C>Тогда С — это объектно-ориентированый язык. В нем можно организовать

C>полиморфизм с помощью vtable'ов (что и делается в COM, кстати).

А главно, что это как раз доказывает гипотизу о воровстве идей Явой из Оберона. Как они лихо то украли идею ООП из Оберона-1. Ведь на С++ ни сколички не похоже.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Справка
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.10.05 20:27
Оценка:
Здравствуйте, Left2, Вы писали:

L>Был такой язык Clipper, мир праху его.

L>Так вот, на нём тоже можно было сэмулировать виртуальные функции примерно с такой же дозой извращений. Я так понимаю, после этого Clipper можно смело зачислять в славные ряды обьектно-ориентированных языков?

Справидливости ради, в Клипере 5 вроде как ООП ввели полноценно. Но кому он был в это время уже нужен?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: AVC Россия  
Дата: 05.10.05 20:28
Оценка: 6 (1) -1
Здравствуйте, VladD2, Вы писали:

VD>Зачатки ООП появились в Оберон 2. А это произошло несколько позже.


Зачатки ООП в Обероне назывались "расширение типа" (type extension), "процедурная переменная" и "охранник типа" (type guard).

AVC>>Хотелось бы только понять, что именно Vlad2 считает "новыми идеями", а что "старыми"?


VD>VladD2, если можно.


Пардон муа.

VD>Ну, вот идею виртуальной машины как абстракции от среды исполнения, я до явы что-то не припомню. Хотя возможно сюда опять же Смолток походит.


Ну, Дейкстру теперь мало кто читает. Писал он об иерархии абстрактных машин и даже реализовал на основе этой идеи операционную систему THE.
Другой, и более близкий, пример — паскалевский P-код. Тот же Гослинг в 1970-е годы занимался именно паскалевским P-кодом.

VD>В общем, были языки в которых та или иная фича появилась в первый раз. Это Алгол, Симула, Смолток, Фортран, С, Паскаль, Лисп, ОКамл и т.п. А есть успешные и не очень собиратели идей. К оным как раз относятся Оберон, Шарп и возможно Ява (хотя есть пара сомнений).


VD>Но вот что точно, так это то что ни Ява, ни Шарп не являются клонами Оберона. Их авторы смотрели на множество языков. Оберон конечно был среди них, но утверждать что из него что-то было взято нельзя просто потому что он сам все взял из других языков.


Оберон первый смог свести "концы с концами", гармонично соединив главные идеи в одно целое.
Чего, повторяю, до него не было.
Поэтому Оберон — именно "классический", а не "экспериментальный" (вроде экстремального Смолтока) язык.
"Экспериментальные" языки стремятся не к сбалансированности и практичности, а к тому, чтобы все построить на основании нового "чудодейственного" средства (ООП, ФП и т.д.)

AVC>>Лично у меня с БрейнФаком другая ассоциация — Си++.

AVC>>По крайней мере, эффект от Си++ вполне соответствующий.

VD>А ты спопоставь факты. Вирт стремился к минимализму в синтаксисе? БрэйнФак этого достиг. С++ все же явно синтаксически богаче.


Т.е. Си++ — сложнее и запутаннее почти всех других языков? Не спорю.
Вирт стремился не к минимализму в синтаксисе как таковому, а к максимальной простоте и ясности в программировании.
Минимализм в синтаксисе служит именно этим целям, будучи весьма удобным и практичным.
Утверждаю это на основании сравнения своего собственного опыта на Си++ и Обероне.

AVC>>>>Пусть кто-нибудь укажет мне на какой-нибудь дообероновский императивный язык, сочетающий ООП с полной безопасностью типов (антипримеры: Си с классами и Смоллток в этом смыследыра на дыре), имеющий модульную структуру (с динамической загрузкой модулей; статическая линковка не требуется), обеспечивающий сборку мусора, эффективное динамическое определение типа и все это — элегантно, минимальными средствами.


VD>>>Смолток как минимум. Еще вопросы?


AVC>>По-моему, я ясно назвал Смоллток антипримером.


VD>Где? И почему? Как раз все перечисленное в нем уже было.


AVC>>Если кто-то считает, что в Смоллтоке существует полная безопасность типов,


VD>Я не знаток Смолтока, но вроде как с этим проблем нет.


AVC>> я даже не знаю, что и сказать.


VD>Знашь, в Смолтоке мне не нравятся две вещи. Очень необычный синтаксис и динамическая типизация.


AVC>>При этом, похоже, этот кто-то вообще не читает ответов.


VD>Ты для начала обоснуй утверждение о дырах в Смолтоке, а потом посмотрим кто что читает не так.


Сопоставь два своих утверждения: о динамической типизации в Смолтоке (определеннее: статической типизации нет вообще) и о том, что в нем нет проблем с безопасностью типов.
А затем объясни, пожалуйста, какая может быть безопасность типов в языке, в котором типов все равно что нет.

AVC>>Конкретнее, пожалуйста. В чем совпали мысли авторов Явы, Дельфи, Шарпа, Ди?


VD>Автоматическое управление памятью, безопастность типов (Ди тут чуть в стороне, но все же).


Какие прозорливцы создатели этих языков! Куда до них Вирту!
Совпадение в этом отношении (автоматическое управление памятью и безопасность типов) с Обероном — чистая случайность, конечно.

AVC>>И что именно неверно оценил Вирт?


VD>Потребности программистов. Его идея, что лучший язык должен быть примитивным была мягко говоря неразумной. Языки должны быть удобны и выразительны. Ну, и его маньиакальное отношение к С-шному синтаксису кроме как маниакальным камризом старика больше никак назвать нельзя. Так биться за ":=" может только недалекие люди. Очень странно что этим занимается стольк известный и уважаемый человек.


Во-первых, Оберон — не примитивный, а очень выразительный язык.
Синтаксический минимализм здесь очень важен: каждая конструкция несет свою уникальную синтаксическую нагрузку, намерения программиста сразу понятны (при чтении программы).
Что касается ":=", то признай, что ты не смог подобрать примера опечатки с ":=". Я все прощу!

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


VD>Реальное вовлощение идей Оберона было до Оберона и без Оберона.


Где??!

Паскаль внес хоть что-то новое. Оберон же ничем не отличается от C# с точки зрения новизны. А по удобству и популярности Оберон вообще ни с кем сравниться не может, так как их в микроскоп не разглядеть.

Да, логика непобедимая.
Оберон (1988) ничем не отличается от C# (2000?) с точки зрения новизны.
А может, все-таки, наоборот?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[15]: Справка
От: alexeiz  
Дата: 05.10.05 20:33
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>динамический полиморфизм реализован посредством процедур связанных с типом (так называемых виртуальных функций).


Ну ты и сноб! Хотя возможно твое мышление просто извращено обероном...
Re[10]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: AVC Россия  
Дата: 05.10.05 20:41
Оценка:
Здравствуйте, jazzer, Вы писали:

AVK>>>>>В Java есть множественное наследование интерфейсов.

AVC>>>>Эта идея в Java действительно новая и, похоже, неплохая.

J>>>Да, ребята...

J>>>Без комментариев

AVC>>А к чему такая скрытность?

AVC>>Я имел в виду, что ни в Обероне, ни в Си++, ни в других известных мне популярных языках наследование интерфейса не было синтаксически отделено от наследования реализации.

J>Да потому что это нафиг не нужно, если есть полноценное множественное наследование.

<...>
J>Так что то, что в java есть синтаксическое разделение, объясняется исключительно отсутствием полноценного множественого наследования, а оставлять язык совсем без множественого наследования было бы уже совсем неприемлемо — никто бы им не пользовался.

J>Так что называть недоработки Java новой (!) и неплохой фичей — уж увольте. Особенно в части новизны.

J>Если хотите, множественное наследование интерфейсов было в винде в COM тыщу лет уж как.
J>И в IDL также.

И почему же, по Вашему, разработчики Явы не ввели это замечательное свойство в свой язык?
Или они просто неисправимые халтурщики, и решили "сдать" язык с "недоделками". Мол, и так сойдет?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[10]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: AVC Россия  
Дата: 05.10.05 20:50
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

AVC>>SYSTEM — не отдельный модуль, а возможность доступа к низкоуровневым средствам языка.

AVC>>ИМХО, такое явное обособление низкоуровневых средств языка очень полезно.

iT>Так... погодите.. где-то я это уже...

iT>
iT>unsafe 
iT>{
iT>...
iT>}
iT>


Т.к. компиляторы Оберона (за исключением компиляторов, ориентированных на JVM и .NET) порождают "нативный" код, то
unsafe {}

имеет несколько другой смысл, чем обероновское
IMPORT SYSTEM;

Сходство тоже есть.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[15]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.10.05 20:52
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Сопоставь два своих утверждения: о динамической типизации в Смолтоке (определеннее: статической типизации нет вообще) и о том, что в нем нет проблем с безопасностью типов.

AVC>А затем объясни, пожалуйста, какая может быть безопасность типов в языке, в котором типов все равно что нет.

Алексей, статическая/динамическая и строгая/слабая типизация -- это ортогональные понятия, как это хорошо объяснил _vovin вот здесь: Re[25]: Типизация
Автор: _vovin
Дата: 04.03.05
и здесь: Re[27]: Типизация
Автор: _vovin
Дата: 04.03.05
.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[18]: Справка
От: AVC Россия  
Дата: 05.10.05 21:01
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> E>Ага, всего лишь есть поддержка ООП средствами языка, или нет ее.

>> Если "ООП = виртуальные функции", то Вы правы. Но я так не считаю.
>> Динамический полиморфизм можно реализовывать по разному и виртуальные
>> функции лишь один из способов.

C>Тогда С — это объектно-ориентированый язык. В нем можно организовать

C>полиморфизм с помощью vtable'ов (что и делается в COM, кстати).

И даже без vtable-ов. Вполне достаточно указателей на функции.
О чем, кстати, писал Пайк в своей статье о стиле программирования на Си.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[23]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: iZEN СССР  
Дата: 05.10.05 21:09
Оценка: 11 (1)
Здравствуйте, NotGonnaGetUs, Вы писали:

NGG>Здравствуйте, eao197, Вы писали:


E>>Так ведь, если программа состоит только из if, switch и return, а из jdk использует только java.lang, то все так и

E>>есть. А если взять какую нибудь Java реализацию для SIM-карт (не для телефонов, хотя я слышал, что и у телефонов с
E>>поддержкой j2me так же есть проблемы с совместимостью JDK), то окажется, что весь API там свой. Да еще и сама Java
E>>урезана так, что даже лишний вызов метода не сделаешь, т.к. под стек всего 256 байт отводится. Вот и получается, что
E>>Java-приложение для такой платформы имеет с Java-приложением для другой платформы общего только название Java.

NGG>Не надо ничего брать, достаточно не путать твёрдное с круглым, причём мне тоже

NGG>Существует спецификация языка java
NGG>http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html
NGG>Cуществует спецификация виртуальной машины
NGG>http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html
NGG>и
NGG>Существуют стандарты J2SE, J2EE, J2ME и что-то там для карт, — вот они как раз,
NGG>не являются стандартом языка, это стандарты библиотек.

Ну не совсем.
В J2ME нет:
* Java Native Interface (JNI, собственный интерфейс Java);
* загрузчики определяемых пользователем классов;
* отражение (reflection);
* группы нитей и демоны нитей (thread daemons);
* финализация (отсутствие метода Object.finalizeQ в библиотеках CLDC);
* слабые ссылки (weak references);
* ошибки (поддерживается небольшая подгруппа ошибок J2SE);
* проверка класса файла.
А это языковые фичи, а не библиотечные (не как в C++).

Большая свинья подложена Sun'ом в виде preverify для мобильного кода. Ничего страшного в этом нет, но по самой своей сути он нарушает принцип WORA.
Конечно, прикладной код J2ME может быть запущен в J2SE. Но точно такой же код, не прошедший preverify никогда не будет работать в среде J2ME.
(Отрадно, что сейчас ведутся работы над новой спецификацией J2ME CDC1.1, в которой не будет необходимости "верифицировать" код во время разработки, а язык Java для портативных устройств снова пулучит те качества, какие у него есть на десктопе (J2SE v.1.4), и Nokia обещала сделать девайсы Series60 на этой платформе, но всё может измениться не в лучшую сторону...)
Re[16]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.10.05 21:23
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Алексей, статическая/динамическая и строгая/слабая типизация -- это ортогональные понятия, как это хорошо объяснил _vovin вот здесь: Re[25]: Типизация
Автор: _vovin
Дата: 04.03.05
и здесь: Re[27]: Типизация
Автор: _vovin
Дата: 04.03.05
.


"строгая" — недетерминированное понятие. Периодически используется как для описания статической-, так и для сильной-типизации. Так что предлагаю его не испоьзовать.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: AVC Россия  
Дата: 05.10.05 21:46
Оценка: 3 (1)
Здравствуйте, eao197, Вы писали:

AVC>>Сопоставь два своих утверждения: о динамической типизации в Смолтоке (определеннее: статической типизации нет вообще) и о том, что в нем нет проблем с безопасностью типов.

AVC>>А затем объясни, пожалуйста, какая может быть безопасность типов в языке, в котором типов все равно что нет.

E>Алексей, статическая/динамическая и строгая/слабая типизация -- это ортогональные понятия, как это хорошо объяснил _vovin вот здесь: Re[25]: Типизация
Автор: _vovin
Дата: 04.03.05
и здесь: Re[27]: Типизация
Автор: _vovin
Дата: 04.03.05
.


Евгений,

это очень интересная тема.
Насколько я вижу, ты всерьез увлекся возможностями динамических языков программирования.
Я тоже немного об этом думал, хотя, скорее всего, меньше, чем ты и _vovin.
Мое возражение тебе (возможно, недостаточно хорошо продуманное) состоит в следующем: использование динамической типизации не требует отказа от статической типизации.
Такие языки, как Смолток, создаются во время горячего увлечения новой идеей.
Все старое и хорошо проверенное выкидывается как "старый хлам".
Как эксперимент (видимо, именно это Вирт называет academic exсersize) это очень интересно.
Но давай посмотрим, а правда ли это дает такие преимущества?

В чем я вижу преимущества динамической типизации на примере
Lisp/Smalltalk (многие перечисленные преимущества являются следствием
предыдущих):

* Маленькое количество правил языка, простой, но очень гибкий и
выразительный синтаксис

Ну что же, Оберон вполне подходит. Только он не в пример читабельнее Смолтока.

* Нет необходимости писать много лишнего кода для многократного
указания типов

Здесь, конечно, Оберон "уступает" Смолтоку: он требует указания типа.
Но посмотрим с другой стороны: (1) указание типа повышает читабельность программы; (2) велика роль опечаток; (3) типы — не хлам, а строительные конструкции.

* Широкии возможности интроспекции/рефлекшна

Есть в Обероне.

* Наличие мощных конструкции вроде closures, continuations, green threads

Здесь, к сожалению, ничего определенного сказать не могу.
Еще в Паскале были closures, но не знаю, имеется ли здесь в виду что-то похожее.

* Более высокий уровень абстракции, благодаря чему можно на самом
языке можно создавать domain-specific languages

Интересно, в чем заключается "высота" абстракции в данном случае?
Я, например, использую в приложениях "специфические" АТД. Это ведь тоже абстракция?

* Отсутствие статического контроля типов волей-не-волей *вынуждает*
задумываться о хорошем покрытии тестами. Как показывает практика, такое
покрытие столь же необходимо и для статических языков вроде Java. Но там
о нем задумываются позже, потому что создается ложная уверенность, что
компилятор позволяет избежать большинства ошибок

Необходимость хорошего тестирования бесспорна.
Но здесь выходит, что на стройке надо ходить без каски. Тогда, мол, строители будут осторожнее.

* Хорошие инструменты для работы с кодом, браузеры, интерактивные
отладчики, возможность писать любой код во время отладки программы,
запускать отдельные участки кода практически из любого места среды
* Наличие среды разработки, написанной на самом языке с доступом ко
всем исходным текстам. Это позволяет на ходу подстраивать среду под себя
и на ее примере изучать строение серьезных программ.

Все это есть (и было с самого начала) в Обероне.
Сохранилось и в Компонентном Паскале.
При наличии статической типизации.

Главное — все хорошо: и статическая типизация, и динамическая типизация, и использование утверждений (программирование по контракту).
Все это есть в Обероне.
А вот в Смолтоке меня насильно лишают статической типизации, которая является для меня важным рабочим инструментом.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[9]: Мои впечатления о лекции Н. Вирта в ННГУ 26.09.2005
От: Зверёк Харьковский  
Дата: 06.10.05 01:45
Оценка: 47 (4)
Здравствуйте, eao197, Вы писали:

E>Когда-то давно, в одной из первых переводных книжек по Java я прочитал историю возникновения Java. Поскольку это было давно, то в памяти у меня отложилось следующее (предупреждаю сразу, что с памятью у меня не важно, поэтому могу приврать). Грослинг участвовал в проекте по созанию ПО для какого-то умного девайса. Изначально они хотели сделать интерпритируемый вариант C++, чтобы упростить разработку ПО на C++, но быстро поняли, что это безнадежная затея. Поэтому они решили выкинуть из C++ все проблемные части (указатели, препроцессор, множественное наследование) и добавить туда лучшее, что было на данный момент (сборку мусора, компиляцию в байт-код). В результате у них получился компактный язык Oak, на котором этот девайс был запрограммирован. К сожалению, на момент завершения работ весь проект считался в Sun проваленным. Но, Грослинг со товарищи был настолько уверен в своем языке, что они сделали презентацию о нем самому Биллу Джою. Именно Джой оценил перспективы языка и дал добро на его развитие. Я думаю, что полную историю этого дела будет знать Зверек Харьковский.


А то как же

Эпиграф: Гослинг и его команда использовали C++ как руководство — чего нужно избегать.


Ты в целом прав, ошибся в некоторых деталях:
1) Oak был не "язык для некоторого устройства", а язык для встраиваемых компьютеров вообще (в смысле, стиральных машин, микроволновок и проч.), предполагалось продавать его производителям бытовой техники; производители не заинтересовались (для них идея показалась слишком сложной; в частности, TimeWarner, искавший партнера для проекта "интерактивного телевидения", выбрало SiliconGraphics, а не Sun) — в результате чего проект провалился (заметим в скобках, что много лет спустя Java, похоже, таки добралась до бытовой техники — через мобильную связь).
2) Для Гослинга Билл Джой не был "сам". Они дружили еще будучи студентами (оба были Unix-гуру, поддерживающими серверы своих ВУЗов, познакомились в сети). Так что Oak был придуман Гослингом и Джоем совместно, и Джой внимательно следил за проектом
3) Как раз Гослинг после провала идеи окучить производителей бытовой техники собирался бросать проект и распускать группу. А Джой, как и было сказано
Автор: Зверёк Харьковский
Дата: 05.09.05
, придумал переориентацию проекта.

Теперь про корни языка.
Все из тот же GoTo by Steve Lohr* подтверждает то, что говорил eao197: начинался язык как "слегка упрощенный C++", рабочий прототип Star7 был готов в 1992.

Тем не менее — готовность Star7 не означала что на тот момент существовала Java. В 1994 году ее разработка была еще в разгаре, и окончательно язык сформировался в начале 1995го. Интересно, что дизайн языка был результатом длительного спора Джоя и Гослинга — первый считал, что важнее мощность и выразительность, второй — что простота. Гослинг победил.
Цитата:

Для разработчика, язык выглядел совершенно как C++. Но в душе Java взяла очень много от Smalltalk, Lisp и Pascal. Моя заслуга в том, что я смог их совместить. (Джеймс Гослинг)

Такие дела.


* Я цитирую чаще всего именно эту книгу, потому что она — относительно надежный источник.
Надежный — потому что Steve Lohr ради ее написания лично разговаривал со всеми участниками событий. (в нашем случае — Gosling, Joy, McNeele, Schmidt).
Относительно — потому что "лично участники событий" могут забыть детали или (намеренно или случайно) соврать.
FAQ — це мiй ай-кью!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.