K>С такой натяжкой можно посчитать любой. Я еще понимаю — перл.
Ну перл уже пошел коболовской дорожкой хотя да он почти был в мейнстриме.
FR>>Раньше были кучи бейсиков, потом VB
K>Ничего не знаю о существовании динамических бейсиков. Будучи школьником, писал на ZX, Корвет(то же, что и GW) и Quick, точно знаю, что в Turbo была система типов идентичная паскалеской — так специально было сделано. Студентом что-то там автоматизировал в офисе на VBA, все это было просто смертельно статическим, ну если комовский вариант в Visual считать динамикой — так и C++ с Delphi тогда динамические. Для того, чтоб добавить в статический язык динамические фичи одного варианта мало — нужен какой-то аналог ExpandoObject с соотвествующей порцией сахара, как в четвертом шарпе.
То есть динамические чисто процедурные языки по твоему вообще не могут существовать?
FR>>Smalltalk.
K>К сожалению, единственный динамический язык промышленного качества (ну, кроме Эрланга) так в мейнстрим и не попал. Хотя, может, и к счастью.
Но был весьма близок.
Ну и множество реализаций лиспа тоже вполне "промышленного" уровня. Да и питон судя по спонсорам http://python.org/psf/ и долговременной поддержке
версий http://python.org/download/releases/ также на этом уровне.
FR>>Интерфейсы ничем динамике ни противоречат,
K>Проверка интерфейсов в компайл-тайм противоречит кардинально. Потому, что это по определению статика. А если проверка в рантайме — то такой интерфейс просто синтаксический сахар для ассерта и описаных мной выше чудес не обеспечивает.
"не чудес" вполне достаточно.
FR>>другой стороны в статике вполне живет безинтерфейсная структурная типизация
K>В статике и структурная типизация все вышеописаные чудеса обеспечит. Дело то не в интерфейсе, как частном случае контракта, а в проверке контрактов в компайл-тайм.
Да это хорошо, но далеко не панацея, все-равно без рантайма никак.
Re[38]: почему в вебе распространены именно динамические язы
Здравствуйте, FR, Вы писали:
FR>То есть динамические чисто процедурные языки по твоему вообще не могут существовать?
Visual Basic не является чисто процедурным языком. Но вообще, вопрос интересный. Динамические процедурные языки, конечно, возможны. Тут главное не в процедурности а в полиморфизме. Динамика это всего-навсего полиморфность по всем аргументам с проверками в рантайме и без какого-то развитого набора средств для ограничения этого полиморфизма. А вот мономорфный язык вроде старого бейсика в принципе не может быть динамическим. Вернее можно, конечно, сделать реализацию, проверяющую типы в рантайме, но написать корректно исполняющуюся программу, у которой нельзя было бы все типы проверить в компайл-тайм в принципе невозможно.
FR>"не чудес" вполне достаточно.
Мне не достаточно.
FR>Да это хорошо, но далеко не панацея, все-равно без рантайма никак.
В тех системах типов, что есть в более-мнее распространенных языках, да, никак.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[39]: почему в вебе распространены именно динамические язы
Здравствуйте, Klapaucius, Вы писали:
FR>>То есть динамические чисто процедурные языки по твоему вообще не могут существовать?
K>Visual Basic не является чисто процедурным языком. Но вообще, вопрос интересный. Динамические процедурные языки, конечно, возможны. Тут главное не в процедурности а в полиморфизме. Динамика это всего-навсего полиморфность по всем аргументам с проверками в рантайме и без какого-то развитого набора средств для ограничения этого полиморфизма. А вот мономорфный язык вроде старого бейсика в принципе не может быть динамическим. Вернее можно, конечно, сделать реализацию, проверяющую типы в рантайме, но написать корректно исполняющуюся программу, у которой нельзя было бы все типы проверить в компайл-тайм в принципе невозможно.
Да тут согласен.
FR>>Да это хорошо, но далеко не панацея, все-равно без рантайма никак.
K>В тех системах типов, что есть в более-мнее распространенных языках, да, никак.
С зависимыми типами тоже свои проблемы появляются, и ограничение тьюринг полноты и описания ограничений типа
с объемом сравнимым с самим кодом, что на практике означает просто перенос ошибок туда.
Re: почему в вебе распространены именно динамические языки?
Здравствуйте, rsdn2010, Вы писали:
R>почему в вебе распространены именно динамические языки программрования — PHP, Python, Ruby, Javascript?
1. Javascript преимущественно используется для клиентского программирования.
Исторически, он начинался как средство внесения небольшого оживления в HTML (Помните такую штуку — DHTML?). Для манипуляций DOM-моделью статически типизированный язык подходит не шибко хорошо. Всё равно у большинства DOM-объектов как такового "типа" нету; удобнее работать с ними как с "мешками" именованных свойств. Скажем, если попытаться прикрутить к ДОМу Паскаль, то получится что-то вроде поздних Delphi — там, где у объектов с IDispatch можно было после точки писать любую ерунду, и компилятор это проглатывал. Ну, то есть статичность типизации оказывалась мало где нужна.
Кто ж знал, что на этой ерунде будут писать почтовых клиентов и 3d-игры.
2. Я не уверен, что PHP, Python и Ruby такие уж динамические. Вот Perl, вроде бы, динамика. Опять же, история развития веба: сначала в нём лежали статические документы, потом стали придумывать динамику. Основная задача — генерация текстов. Процессинг текстов в традиционных статически типизированных языках типа C/C++ сделан, мягко говоря, не очень удобно. Поэтому писали на том, что подвернулось под руку.
3. Опять же, большинство традиционных "статических" языков очень требовательны к программисту. Запустить Хелло Ворлд на С++ это уже целая наука — помимо собственно языка, нужно ещё уметь кучу правил сборки, верно расставить инклюды, корректно описать int main(). Нужно сидеть, руками описывать типы для всего. Нужно декларировать тип каждой переменной и всё такое. Как показало развитие событий, вполне можно иметь статический язык с выводом типов, но это развитие произошло спустя много лет после взлёта веба. А в 90е годы всяко было проще написать программу без всех этих нудных unsigned int, потому что оно и так работает. А если не работает — ничего страшного, цикл исполнения — это одна страница. Сломалось — поправили. И, опять же, без 25минутной компиляции windows.h.
4. Стоит отметить, что сейчас статика в вебе распространена достаточно сильно: ASP.NET и Java используются весьма широко. Обе платформы предлагают вполне себе статику.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: почему в вебе распространены именно динамические язык
Здравствуйте, Гест, Вы писали:
Г>Здравствуйте, rsdn2010, Вы писали:
R>>почему в вебе распространены именно динамические языки программрования — PHP, Python, Ruby, Javascript?
Г>По историческим причинам, полагаю.
Г>Они же не «победили» статические альтернативы: сначала почти что только они и были. А взялись, по всей видимости, из Юникс-культуры скриптов.
Не победили, а дополнили. Победить они могут только в головах конкретных разработчиков, которые в зависимости от задачи используют то или иной язык.