The Scala Experience - Programming With Functional Objects
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.10.07 08:21
Оценка: 17 (2) +1
На конференции OOPSLA 2007 Мартин Одерский сделал презентацию Scala: The Scala Experience — Programming With Functional Objects (PDF, 186Kb)

На 46 слайдах дается обзор основных особенностей языка, принципах трансляции Scala-кода в Java, роли и месте Scala (как гибрида FP и OOP) в современном мире.

Я просмотрел с интересом. Но местами есть и явные передергивания:

In 1996,
• garbage collection was considered a risky bet,
• strong typing was considered impractical by many,
• generic types were only found in ``academic’’ languages
Java has changed all of this.

Уж не знаю, как насчет generic types в 1996, а вот в то, что сильная типизация в то время рассматривалась как непрактичная -- это он со зла, имхо.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: The Scala Experience - Programming With Functional Objec
От: geniepro http://geniepro.livejournal.com/
Дата: 20.10.07 12:45
Оценка:
Здравствуйте, eao197, Вы писали:

E>Уж не знаю, как насчет generic types в 1996, а вот в то, что сильная типизация в то время рассматривалась как непрактичная -- это он со зла, имхо.


generic types появились в Ада ещё в начале 80-х (см. generic packages в Ада-83).
В ФЯ типа SML полиморфные типы были небось ещё раньше...
Re: The Scala Experience - Programming With Functional Objec
От: geniepro http://geniepro.livejournal.com/
Дата: 20.10.07 12:49
Оценка: 1 (1) +1
Здравствуйте, eao197, Вы писали:

Да и сборка мусора давным давно была и в ФЯ, и в Оберонах, а в Алголе-68 она рекомендовалась в начале 70-х... Какое-то неадекватное место в этой статье...
Re: The Scala Experience - Programming With Functional Objec
От: z00n  
Дата: 20.10.07 20:14
Оценка:
Здравствуйте, eao197, Вы писали:

E>Уж не знаю, как насчет generic types в 1996, а вот в то, что сильная типизация в то время рассматривалась как непрактичная -- это он со зла, имхо.


С, С++ — языки со слабой типизацией, не нужно путать со статической
Re[2]: The Scala Experience - Programming With Functional Ob
От: z00n  
Дата: 20.10.07 20:22
Оценка:
Здравствуйте, geniepro, Вы писали:

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


G>Да и сборка мусора давным давно была и в ФЯ, и в Оберонах, а в Алголе-68 она рекомендовалась в начале 70-х... Какое-то неадекватное место в этой статье...


Как это противоречит

In 1996 ... garbage collection was considered a risky bet

?
Java — первый мэйнстрим язык с GC.
Re[2]: The Scala Experience - Programming With Functional Ob
От: z00n  
Дата: 20.10.07 20:44
Оценка:
G>generic types появились в Ада ещё в начале 80-х (см. generic packages в Ада-83).
G>В ФЯ типа SML полиморфные типы были небось ещё раньше...

generic types were only found in "academic" languages


Гадкий Одерски — он назвал Аду и SML "академическими языками"!
Намного интереснее, почему он считает, что "generic types" нет в С++ .

Вот что думает по этому поводу простой неакадемический практик:

...
Anders Hejlsberg: To me the best way to understand the distinction between C# generics and C++ templates is this: C# generics are really just like classes, except they have a type parameter. C++ templates are really just like macros, except they look like classes.

Re[2]: The Scala Experience - Programming With Functional Ob
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.10.07 15:07
Оценка:
Здравствуйте, z00n, Вы писали:

E>>Уж не знаю, как насчет generic types в 1996, а вот в то, что сильная типизация в то время рассматривалась как непрактичная -- это он со зла, имхо.


Z>С, С++ — языки со слабой типизацией, не нужно путать со статической


А при чем здесь C/C++?
Проблем со слабой типизацией в C/C++ в то время было еще больше, чем сейчас, т.к. поддержка шаблонов в тогдашних компиляторах была на начальном этапе развития. И далеко не всегда для нужной ОС был C++ный компилятор с поддержкой шаблонов. Отсюда необходимость работы через void* и вытекающие последствия.

Я же говорил о том, что даже в те времена языки с сильной типизацией многими рассматривались как более адекватная замена C++. Тот же Pascal в виде различных Borland-овских компиляторов. Smalltalk, который в начале 90-х был достаточно известен и восстребован. Eiffel. Примеров достаточно можно найти, имхо. Да и Одерски был учеником Вирта и не мог не следовать идеям строгих Виртовских языков.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: The Scala Experience - Programming With Functional Ob
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.10.07 15:18
Оценка:
Здравствуйте, z00n, Вы писали:

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


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


G>>Да и сборка мусора давным давно была и в ФЯ, и в Оберонах, а в Алголе-68 она рекомендовалась в начале 70-х... Какое-то неадекватное место в этой статье...


Z>Как это противоречит

In 1996 ... garbage collection was considered a risky bet

?

Z> Java — первый мэйнстрим язык с GC.

Да ладно уж, первый мэйнстрим язык. Еще до Java хватало языков с GC, которые были менстримом для своего времени: Lisp, Simula, SmallTalk, Eiffel, ...


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: The Scala Experience - Programming With Functional Ob
От: z00n  
Дата: 22.10.07 01:21
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>А при чем здесь C/C++?

Вы серьезно спорите с тем, что программистов на С\С++ можно назвать "многие" (... by many)?
Re[4]: The Scala Experience - Programming With Functional Ob
От: z00n  
Дата: 22.10.07 02:04
Оценка:
E>Да ладно уж, первый мэйнстрим язык. Еще до Java хватало языков с GC, которые были менстримом для своего времени: Lisp, Simula, SmallTalk, Eiffel, ...

Я не хочу спорить о словах, но не стоит называть майнстримом то, чем пользуется полпроцента и меньше.
Забавно было увидеть в вашем майнстримном ряду Simula — язык, который никто в глаза не видел, кроме Страуструпа, который наверняка был студентом у его автора
Re[4]: The Scala Experience - Programming With Functional Ob
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.10.07 08:08
Оценка:
Здравствуйте, z00n, Вы писали:

E>>А при чем здесь C/C++?

Z>Вы серьезно спорите с тем, что программистов на С\С++ можно назвать "многие" (... by many)?

Давайте я расставлю здесь все точки над i, заодно и касательно вот этого вашего ответа: http://www.rsdn.ru/Forum/message/2701126.aspx
Автор: z00n
Дата: 22.10.07


Итак, я придрался к фразе Одерски:

strong typing was considered impractical by many


Т.е., благодоря своему плохому английскому я понял Одерски так, что в 1996 многие программисты рассматривали сильную типизацию как непрактичную. И с этим я не согласен.

Как я понимаю, ваш контраргумент состоит в том, что раз в то время C/C++ программистов было много, то все они были приверженцами слабой типизации и, следовательно, все они считали сильную типизацию непрактичной.

Но с этим я так же не согласен. В 1996-м году я как раз был одним из многих C++ программистов. Но вовсе не фанатом слабой типизации. В те времена я точно не отличал сильную типизацию от статической, но мне в C++ не хватало жесткого котроля, который был, например в Pascal. Это, как бы, первый аргумент против высказывания Одерски.

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

Ну и третий аргумент в том, что те люди, которые могли делать выбор между слабой и сильной типизацией, а это разработчики новых языков, как раз делали свой выбор в пользу сильной типизации. И делали это задолго до 1996-го года. Давайте вспомним, C++ со своими основным чертами и наследием от C сформировался в 1983-м году. В 1986-м появляется его конкурент Eiffel со строгой типизацией и сборщиком мусора. В 1983-м -- спецификация Ada. В 1985-86 -- ObjectPascal в Apple. В 1986-88-м -- Oberon. К этому моменту существовали Lisp-ы и SmallTalk. В начале 90-х начинали свою жизнь Perl, Python и Ruby. И все это были языки с сильной типизаций. (Я даже с ходу не могу вспомнить какой-нибудь известный язык со слабой типизацией, появившийся в это время. Разве что наследник C++ -- D, который именно на нишу C++ и нацелен). Так что и здесь, по-моему, выходит, что в 1996-м году сильная типизация рассматривалась многими как очень практичная.

Ну и по поводу мейнстрим языков и того, что Java был первым мейнстрим языком со сборкой мусора. Во времена господства Cobol и PL/1 меня, наверное, еще и на свете не было. Но то, что в свое время такие языки, как Lisp и Smalltalk, были частью мейнстрима, у меня сомнений нет. Оба эти языка были языками со сборкой мусора.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.