На 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
Здравствуйте, eao197, Вы писали:
E>Уж не знаю, как насчет generic types в 1996, а вот в то, что сильная типизация в то время рассматривалась как непрактичная -- это он со зла, имхо.
generic types появились в Ада ещё в начале 80-х (см. generic packages в Ада-83).
В ФЯ типа SML полиморфные типы были небось ещё раньше...
Re: The Scala Experience - Programming With Functional Objec
Да и сборка мусора давным давно была и в ФЯ, и в Оберонах, а в Алголе-68 она рекомендовалась в начале 70-х... Какое-то неадекватное место в этой статье...
Re: The Scala Experience - Programming With Functional Objec
Здравствуйте, eao197, Вы писали:
E>Уж не знаю, как насчет generic types в 1996, а вот в то, что сильная типизация в то время рассматривалась как непрактичная -- это он со зла, имхо.
С, С++ — языки со слабой типизацией, не нужно путать со статической
Re[2]: The Scala Experience - Programming With Functional Ob
Здравствуйте, 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
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
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, z00n, Вы писали:
E>А при чем здесь C/C++?
Вы серьезно спорите с тем, что программистов на С\С++ можно назвать "многие" (... by many)?
Re[4]: The Scala Experience - Programming With Functional Ob
E>Да ладно уж, первый мэйнстрим язык. Еще до Java хватало языков с GC, которые были менстримом для своего времени: Lisp, Simula, SmallTalk, Eiffel, ...
Я не хочу спорить о словах, но не стоит называть майнстримом то, чем пользуется полпроцента и меньше.
Забавно было увидеть в вашем майнстримном ряду Simula — язык, который никто в глаза не видел, кроме Страуструпа, который наверняка был студентом у его автора
Re[4]: The Scala Experience - Programming With Functional Ob
Т.е., благодоря своему плохому английскому я понял Одерски так, что в 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++.