Re: Мои мысли по теме Статика sv. Динамика
От: _rasta  
Дата: 10.11.06 07:09
Оценка: 3 (1) +6 :))) :))) :))) :))) :)))
Здравствуйте, VladD2, Вы писали:

читая каждый пост тов. VladD2 я постоянно вспоминаю одно любимое мной определение науки: "наука это то, чем занимаюсь Я!".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.11.06 20:56
Оценка: 35 (4) +3 -7 :))
Тема ушла в полнейший аут. Так что лазить по ней нет никакого желания. Если у кого есть желание, то можете выскаться здесь.

Защитники статической типизации не то что бы верят, во что-то. Они пользуются доказанными фактами. А вот их оппоненты именно что верят. Причем, почему-то споря с защитниками статической типизации, они спорят не с их утверждениями, а с некими вымышленными.

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

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

Мне кажется, что очевидно, что при прочих равных статическая типизация лучше. Так что выбор динамики — это однозначный компромисс. Раз так, то этот выбор может быть оправдан, только при условии, что динамика дает какие-то существенные преимущества по сравнению со статикой.

И разумно было бы повернуть обсуждение именно в эту сторону. Потому как если таких преимуществ или они не значительны, то мы наблюдаем форменное проявление фанатизма и не желания видеть факты.

Пока что из преимуществ динамики я слышал:
1. Отсутствие аннотаций типов замусоривающих код. Мало того, что это утверждение спорно (многие считают аннотацию типов средством документирования и дополнительной информацией), так оно еще и ложно, так как есть очень нехилые СТЯП (статически типизированные языки программирования) занимающиеся выводом типов и не требующие наличия аннотаций или сокращающие их применение до мизерных величин.
2. Программу можно сделать гибче принимая решение в runtime-е. Да, само по себе это так. Но современные СТЯП без проблем позволяют делать это. А во многих случаях помогает метапрограммирование. Оно к тому же дает более надежный и более производительный код.
3. Более интерактивный режим разработки. Да, это, пожалуй, единственно верный пункт. Но и но скорее является обманом. Ведь современные СТЯП тоже предоставляют весьма интерактивный режим разработки. Фактически сегодня они не умеют править структуру типов на ходу. Но так ли это важно если на правку приложения и его перезапуск уходят считанные секунды? На мой взгляд совершенно не важно. По крайней мере остальные преимущества СТ (статической типизации) явно перевешивают этот недостаток.
4. Код на ДТЯП (динамически типизированные языки программирования) меньше и его легче держать в голове. Это откровенная лож. Но эта лож пожалуй чаще всего повторяется поклонниками ДТЯП. А чтобы эта лож не выглядила очень уж явно она всегда преподносится на фоне ЯП вроде С и С++ чья выразительность уже давно оставляет желать лучшего. Правда же заключается в том, что выразительность языка (а именно она определяет сколько кода нужно для выражения одной мысли) определяется не типом типизации, а количеством и качеством реализованных в них языковых конструкций (и/или средств расширения языка). Так ДТЯП чаще всего пиаримые на этом форуме — Питон и Руби существенно проигрывают как ДТ Эрлэнгу, так и СТ Nemerle-у просто потому, что в их арсенале нет таких мощных средств как алгебраические типы и сопоставление с образцом.

Если список не полон, то дополните его. Конкретно этот список на мой взгляд явно показывает надуманность гипотезы о преимуществе ДТЯП перед СТЯП.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Мои мысли по теме Статика sv. Динамика
От: IT Россия linq2db.com
Дата: 10.11.06 04:31
Оценка: +1 :))) :)))
Здравствуйте, FR, Вы писали:

FR>Есть исключения, если дело происходит на RSDN и ворона (или их маленькая стайка) исповедуют Nemerle, то мнение сразу становится очень даже определяющим


Потому что это правильные вороны и они исповедуют правильный Немерле
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re: Мои мысли по теме Статика sv. Динамика
От: MikhasSergei Земля  
Дата: 11.11.06 20:22
Оценка: 32 (2) :))
Полушутя, полусерьезно...

Опыт, батенька, и пиар — вот движущий фактор эволюции.
Re: Мои мысли по теме Статика sv. Динамика
От: vdimas Россия  
Дата: 10.11.06 10:37
Оценка: 2 (2) +2
Здравствуйте, VladD2, Вы писали:

Свое мнение уже высказывал, оно сводится только к п.3.

VD>3. Более интерактивный режим разработки. Да, это, пожалуй, единственно верный пункт. Но и но скорее является обманом. Ведь современные СТЯП тоже предоставляют весьма интерактивный режим разработки.


Пока что нет, хотя я не вижу причин, почему бы не сделать подобную поддержку полноценной. Технических препятствий, например, для платформы дотнет и языка C# нет, надо просто потратить на это определенное кол-во времени и ср-в.


VD>Фактически сегодня они не умеют править структуру типов на ходу. Но так ли это важно если на правку приложения и его перезапуск уходят считанные секунды?


Немного не так.

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

2. Средства, типа NUnit немного помогают, до тех пор, пока кол-во размеченных тестов не переваливает за несколько сотен. Тогда эти ср-ва становятся откровенной обузой при попытке организовать с их помощью интерактивный режим разработки.

3. Некоторые классы задач требуют предварительной инициализации окружения. Например у нас сервак "встает" минимум 10-15 сек. Без возможности интерактивности каждый отладочный запуск сопровождает полная инициализация окружения. Это крайне неудобно. В интерактивной среде было бы возможно проинициализировать окружение лишь однажды, и затем использовать его в процессе отладки.


VD>На мой взгляд совершенно не важно. По крайней мере остальные преимущества СТ (статической типизации) явно перевешивают этот недостаток.


Повторю, недостаток лишь в текущем качестве популярных инструментов для статических языков на динамических платформах.

По мне, статическая типизация — почти всегда плюс, но помимо этого мне нравится "лабораторно-исследовательский" режим работы для целого класса задач.

Я уже высказвал свое ИМХО, что любители динамических языков любят их скорее за своеобразную организацию труда при их использовании. Дайте это же в мир статических языков (типа макроса "late" в N), и все будет в шоколаде.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.11.06 23:25
Оценка: +1 -3
Здравствуйте, Курилка, Вы писали:

К> допустим изменение метода класса может превратиться в одну операцию, вызов его во вторую, тогда как в статике тебе надо:

К>1. изменить метод.
К>2. сохранить файл.
К>3. скомпилить сборку.
К>4. запустить тест.

Ну, да, ну, да. Придумывай сказки. Волшебная командная строка и ужасный набор страшных действий.

Вот только по жизни все с точностью на оборот. Изменить строку в проекте и нажать F5 или долго возиться вспоминая что нужно набить в командной строке чтобы что-то получить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 10.11.06 07:00
Оценка: +1 :)))
Здравствуйте, VladD2, Вы писали:

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


FR>>5. Утиная типизация и вообще бесплатное обобщенное программирование.


VD>Кури ОКамл — тстатически типизированный язык с утиной типизацией.


В котором попытка написать простейшую обощенную функцию работающую с любыми числами приводит к закипанию мозгов начинающего изучать язык программиста. Спасибо не надо. Хотя на своем месте вещь хорошая.

VD>Что до бесплатности, то курим сыр в мышеловках. Плата за "бесплатность" — тормоза и ошибки, а так же их более позднее обнаружение.


Конечно у тебя есть большая статистика на эту тему?

FR>>6. eval и все с ним связанное.


VD>Кури динамическую компиляцию.


Костыль.
И курить вредно.

FR>>7. Динамика гораздо удобнее как склеевающий и настроечый язык,


VD>Да, да. Клей очень нужен чтобы склеивать разбитые вещи и замазывать щели.

VD>Если это твой путь, то таки да. Заплатки ставить с клее легче.

Кому как.

VD>Если же серьезно. Приличные языки не нуждаются в клее. Они сами если что себя склюят. Это вообще какой-то лженаучный миф. Что есть этот мифический "клей"? Что мешает тому же C# выступать в качестве клея? Другими словами, есть какие-то объективные критерии определяющие то, что язык может быть клеем, или не может?


C# как клей не достаточно гибкий и слишком сложный язык. Примитивный Tk и то гораздо лучше.

FR>>особенно для непрофессионалов.


VD>Это ты о кухарках в управлении государством?


Нет это об областях где важнее быть профессионалом в некой прикладной области и работать с гибко настраиваеми программными инструментами. Например с 1C. Или скриптование в играх.

FR>>8. Скриптование.


VD>А это что-такое? Ты же тут всю плеш проел, что Питн не скрипт, а динамический язык? Опять же. У этого чуда "скриптования" есть объективные показатели?

VD>Лично я даже слова то такого не знаю в русском.

Питон это динамический язык который удобно использовать для скриптования.

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


Ты сегодня очень самокритичен
Re[12]: Мои мысли по теме Статика sv. Динамика
От: Mirrorer  
Дата: 09.11.06 10:08
Оценка: +3
Здравствуйте, Курилка, Вы писали:

К>Не знаю, не вижу особой связи между этими вещами.

К>Просто при интерактивности ты "по живому" сможешь попробовать сценарии, а при статике — тесты гонять.

Для более менее сложного сценария, необходимо, чтобы система находилась в определенном состоянии. Т.е. были созданы все пред-условия для начала выполнения юз кейса какого-нибудь. А выполнение какого-то сценария переводит систему в другое состояние. И для запуска того же сценария, но с измененным методом допустим каким-нибудь необходимо будет сначала привести систему в исходное состояние. А здесь уже возможны варианты
1) останавливать систему, и переинициализировать все.
(в статике это допустим можно сделать допустим в NUnit. Перед выполнением юнит теста приведем систему к необходимому состоянию, а после выполнения, допустим откатим все до исходного состояния. При этом не обязательно загружать всю систему, можно использовать реально только ту часть с которой хочется играться. Уверен, что точно то же можно сделать и в динамике.)

2) не останавливая систему попытаться перевести ее в нужное состояние.
Для достаточно сложной системы я не думаю что это будет проще\быстрее перезапуска.
Тут вопрос больше не в монолитности, а именно в наличии состояния системы или подсистемы ИМХО.

Что будет проще в каждой из систем — хз.
К>И что такое "сложнее"? Большое число слабосвязных компонент? Тогда их можно отдельно тестить и "играться" с ними.
+1 Но тестить и играться можно и в юнит тестах. конечно цикл Red green refactor из TDD в статике будет скорее всего медленнее, чем REPL в динамике, но я не думаю, что это будет НАМНОГО медленнее. А если нужно определенное состояние для начала игры, то и для динамики придется делать перезапуск.
... << RSDN@Home 1.2.0 Ногу Свело — Happy, Because Pregnant >>
Re[11]: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 09.11.06 23:19
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Андрей Коростелев, Вы писали:


АК>>Их массовости мнения не следует, что это мнение верно.


VD>Это не имеет значения. Главно, что мнение одной белой вороны точно не является определяющим.


Есть исключения, если дело происходит на RSDN и ворона (или их маленькая стайка) исповедуют Nemerle, то мнение сразу становится очень даже определяющим
Re: Мои мысли по теме Статика sv. Динамика
От: DerBober США  
Дата: 10.11.06 15:14
Оценка: +2 :)
Здравствуйте, VladD2, Вы писали:

VD>Если список не полон, то дополните его. Конкретно этот список на мой взгляд явно показывает надуманность гипотезы о преимуществе ДТЯП перед СТЯП.


Такие рассуждения явно показывают надуманость гипотизы о существовании идеального языка программирования (ИЯП) в отрыве от приложений.
Re[3]: Мои мысли по теме Статика sv. Динамика
От: DerBober США  
Дата: 11.11.06 22:01
Оценка: -1 :))
Здравствуйте, VladD2, Вы писали:

DB>>Такие рассуждения явно показывают надуманость гипотизы о существовании идеального языка программирования (ИЯП) в отрыве от приложений.


VD>Я устал повторять, что идиал недостижим, но стремление к нему — это то что делает человека человеком.


Бобер уже достиг идеала в сфере платиностроения и стал человеком. Формула: ИЯП(б) = C++ + python + shell
Re[3]: Мои мысли по теме Статика sv. Динамика
От: Programmierer AG  
Дата: 17.11.06 11:02
Оценка: 11 (1) +1
Кодт wrote:

> Контрпример: интерпретаторы хаскелла (например, HUGS).

>
> СТ в REPL помогает, отсекая простейшие логические ошибки. В лиспе можно ввести какой-нибудь синтаксически корректный бред, а потом удивляться.
>
>; (defun bred1 (x) (+ (car x) x))
>; (defun bred2 (x) (+ (car x) (cdr x)) %% впрочем, это может быть корректным для cons-пары из двух чисел
>;

> А хаскелл сразу надаёт по пальцам.

По пальцам, конечно, надает. Но в целом контрпример слабенький.
Хаскеловские интерпретаторы годятся только для того, чтобы загрузить в
них исходник и поиграться с определенными в нем функциями (что само по
себе неплохо, т.к. избавляет от необходимости писать тестовый код).
Ни Hugs, ни ghci не позволяют вводить определения новых типов. В хугсе
даже новые функции и переменные вводить нельзя, а в ghci для этого
приходится вот так извращаться:
Prelude> x <- return 1 -- вместо x=1
Prelude> twice <- return $ \x -> x*2 -- вместо twice x = x*2

Гораздо лучше с этим у окамла и F#, там интерактивному toplevel'у можно
скормить что угодно. Но и у них есть проблема: lexical scoping. В
интерпретаторе Схемы можно исправить ошибку в коде вспомогательной
функции, и все заработает:
gleb@gleb:~/src/crap> guile
guile> (define (avg x y) (+ x y)) ; черт, забыл поделить на 2!
guile> (define (foo x y u v) (+ (avg x y) (avg u v)))
guile> (foo 1 2 3 4)
10
guile> (define (avg x y) (/ (+ x y) 2))
guile> (foo 1 2 3 4)
5.0

А в интерпретаторе Окамла после переопределения avg функция foo будет
использовать старую версию avg. Что в результате приводит к тому же
сценарию, что и с hugs/ghci: код набираем в емаксе с tuareg-mode, после
каждого изменения — tuareg-eval-buffer (т.е. загружаем весь файл заново
в интерпретатор).
Posted via RSDN NNTP Server 2.0
Re: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.11.06 21:11
Оценка: 1 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>3. Более интерактивный режим разработки. Да, это, пожалуй, единственно верный пункт. Но и но скорее является обманом. Ведь современные СТЯП тоже предоставляют весьма интерактивный режим разработки. Фактически сегодня они не умеют править структуру типов на ходу. Но так ли это важно если на правку приложения и его перезапуск уходят считанные секунды? На мой взгляд совершенно не важно. По крайней мере остальные преимущества СТ (статической типизации) явно перевешивают этот недостаток.

Это очень субъективный на мой взгляд фактор и зависит от привычек, вон Вольфхаунд неделями пишет код до компиляции вроде как
А некоторые очень любят REPL, а его на статике врядли получишь
Так что, имхо, каждому своё, и, наверное, каждой задаче своё, т.к. нужная интерактивность может ею определяться.
Re[7]: Мои мысли по теме Статика sv. Динамика
От: Mirrorer  
Дата: 09.11.06 06:33
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Вот только по жизни все с точностью на оборот. Изменить строку в проекте и нажать F5 или долго возиться вспоминая что нужно набить в командной строке чтобы что-то получить.


Есть подозрение, что вспоминать ничего не придется, после некоторого опыта работы... Скорее всего это будет делаться на автомате, по крайней мере в 90% основных случаях.
А что до ф5, я долго и мучитлеьно вспоминаю, где же все-таки прописать параметр который будет передаваться экзешнику при запуске.

Но все равно пользуюсь студией
... << RSDN@Home 1.2.0 silent >>
Re[15]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.11.06 10:39
Оценка: +1 :)
Здравствуйте, Mirrorer, Вы писали:

M>А там, где нету REPL его можно эмулировать юнит-тестами


Ну да, вопрос только насколько это будет равноценная замена, а тут, как говорится, it depends.
Но лично мне уже как-то надоело слишком абстрактно это обсуждать, а конкретных примеров сам придумать не могу — нужна практика, поэтому разойдёмся полюбовно
Re[8]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.06 11:18
Оценка: +2
Здравствуйте, Mirrorer, Вы писали:

M>Есть подозрение, что вспоминать ничего не придется, после некоторого опыта работы...


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

M> Скорее всего это будет делаться на автомате, по крайней мере в 90% основных случаях.


Вот, вот, вот. И совершенно не ясно чем выработка каких-то там рефлексов будет лучше чем просто нажатие на F5.

M>А что до ф5, я долго и мучитлеьно вспоминаю, где же все-таки прописать параметр который будет передаваться экзешнику при запуске.


Ничего, это не вседа надо, и уж точно проще чем выработка рефлексов.

M>Но все равно пользуюсь студией


И я о том же.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 09.11.06 23:19
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

VD>Тема ушла в полнейший аут. Так что лазить по ней нет никакого желания. Если у кого есть желание, то можете выскаться здесь.


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


Можно посмотреть на доказательства?
Наверно ты про математическую верификацию программ? Правда императивные (и гибридные) языки со статической типизацией пролетают мимо такаой верификации.

VD>А вот их оппоненты именно что верят. Причем, почему-то споря с защитниками статической типизации, они спорят не с их утверждениями, а с некими вымышленными.


Не верят а пользуются эмпирическим опытом.

VD>Так, похоже, что в этой дискуссии ни один защитник статической типизации не говорит, что тесты это плохо. Они говорят другое. Они говорят, что тесты — это не всегда возможно. Что тесты не гарантируют отсутствия ошибок. И говоря, что с точки зрения надежности и простоты модификации кода лучше иметь статически типизированную программу с тестами, чем динамически типизированную с ними же.


Смотря какая модификация. Для прототипов лучше динамика, все легче меняется. И наооборот для алгоритмов с жесткими условиями необходимы обширные тесты, которые нивелируют типизацию.


VD>Пока что из преимуществ динамики я слышал:

VD>1. Отсутствие аннотаций типов замусоривающих код. Мало того, что это утверждение спорно (многие считают аннотацию типов средством документирования и дополнительной информацией), так оно еще и ложно, так как есть очень нехилые СТЯП (статически типизированные языки программирования) занимающиеся выводом типов и не требующие наличия аннотаций или сокращающие их применение до мизерных величин.
VD>2. Программу можно сделать гибче принимая решение в runtime-е. Да, само по себе это так. Но современные СТЯП без проблем позволяют делать это. А во многих случаях помогает метапрограммирование. Оно к тому же дает более надежный и более производительный код.

СТЯП позволяют в runtime подменить метод у класса?
Метапрограммирование абсолютно паралельно типизации. И с успехом применяется и в динамических языках, кстати часто для ограничения излишней гибкости

VD>3. Более интерактивный режим разработки. Да, это, пожалуй, единственно верный пункт. Но и но скорее является обманом. Ведь современные СТЯП тоже предоставляют весьма интерактивный режим разработки. Фактически сегодня они не умеют править структуру типов на ходу. Но так ли это важно если на правку приложения и его перезапуск уходят считанные секунды? На мой взгляд совершенно не важно. По крайней мере остальные преимущества СТ (статической типизации) явно перевешивают этот недостаток.


Конечно все чем ты не пользуешся или тебе не понравилось это обман.

VD>4. Код на ДТЯП (динамически типизированные языки программирования) меньше и его легче держать в голове. Это откровенная лож.


Конечно ложь ведь J это статически типизированный язык

VD>Но эта лож пожалуй чаще всего повторяется поклонниками ДТЯП. А чтобы эта лож не выглядила очень уж явно она всегда преподносится на фоне ЯП вроде С и С++ чья выразительность уже давно оставляет желать лучшего. Правда же заключается в том, что выразительность языка (а именно она определяет сколько кода нужно для выражения одной мысли) определяется не типом типизации, а количеством и качеством реализованных в них языковых конструкций (и/или средств расширения языка). Так ДТЯП чаще всего пиаримые на этом форуме — Питон и Руби существенно проигрывают как ДТ Эрлэнгу, так и СТ Nemerle-у просто потому, что в их арсенале нет таких мощных средств как алгебраические типы и сопоставление с образцом.


Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина

VD>Если список не полон, то дополните его. Конкретно этот список на мой взгляд явно показывает надуманность гипотезы о преимуществе ДТЯП перед СТЯП.


5. Утиная типизация и вообще бесплатное обобщенное программирование.
6. eval и все с ним связанное.
7. Динамика гораздо удобнее как склеевающий и настроечый язык, особенно для непрофессионалов.
8. Скриптование.
Re[11]: Мои мысли по теме Статика sv. Динамика
От: dr.Chaos Россия Украшения HandMade
Дата: 10.11.06 09:49
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Андрей Коростелев, Вы писали:


АК>>Их массовости мнения не следует, что это мнение верно.


VD>Это не имеет значения. Главно, что мнение одной белой вороны точно не является определяющим.


Но может таковым стать через некоторое время, даже после её смерти .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[2]: Мои мысли по теме Статика sv. Динамика
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 14.11.06 08:28
Оценка: +1 -1
Здравствуйте, MikhasSergei, Вы писали:

MS> Опыт, батенька, и пиар — вот движущий фактор эволюции.


Причем, зачастую, опыт является следствием пиара.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Мои мысли по теме Статика sv. Динамика
От: WolfHound  
Дата: 09.11.06 11:40
Оценка: 1 (1)
Здравствуйте, Курилка, Вы писали:

К>Я специально же написал, что подход к разработке меняется, если ты его не пробовал и пробовать не хочешь — это не значит, что другим людям он не может быть очень удобен и привычен

Я пробовал. Мне не понравилось. Очень медленно. Скажем на моих текущих задачах чатобы получить что-то с чем можно поигратся нужно долбить код несколько дней. Иначе игратся просто не с чем. Игратся с отдельным куском системы совершенно бесполезно ибо они тривиальны. Важна лишь архитектура высокого уровня, а с ней REPL не работает ибо не тот уровуень.
И это на один вариант системы. За день я могу просчитать несколько вариантов архитектуры.
Также нужно иметь в виду что на моих задачах нужно выжать из железа 90%-100% производительности те питон и тем болие руби идут лесом тк тормоза.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Мои мысли по теме Статика sv. Динамика
От: Кодт Россия  
Дата: 15.11.06 16:20
Оценка: 1 (1)
Здравствуйте, Курилка, Вы писали:

К>А некоторые очень любят REPL, а его на статике врядли получишь


Контрпример: интерпретаторы хаскелла (например, HUGS).

СТ в REPL помогает, отсекая простейшие логические ошибки. В лиспе можно ввести какой-нибудь синтаксически корректный бред, а потом удивляться.
(defun bred1 (x) (+ (car x) x))
(defun bred2 (x) (+ (car x) (cdr x)) %% впрочем, это может быть корректным для cons-пары из двух чисел

А хаскелл сразу надаёт по пальцам.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[5]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.11.06 22:43
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Конкретно про REPL — воздержусь, так как незнаком с ним.


VD>Про прототипирование могу сказат. Это одна из мантр потвотяемая динамщиками. Вот только современные статически типизированные языки без проблем позволяют быстро и качественно делать прототипы (если я правильно понимаю этот термин). Так что приемуществ тут особых нет.


Не знаю, я тоже вроде не сильный адепт REPL, но вот думаю, что как раз эти 2 вещи получаются очень связанные: из коммандной строки ты можешь менять собственно всё поведение системы: определения классов (если таковые есть в языке ), функции и т.п., создавать объекты, менять по ходу "пьесы" их сущность, причём всё это происходит "на лету", т.е. допустим изменение метода класса может превратиться в одну операцию, вызов его во вторую, тогда как в статике тебе надо:
1. изменить метод.
2. сохранить файл.
3. скомпилить сборку.
4. запустить тест.
Причём интересный пункт 4 — а что будет если у нас не такой примитивный класс? Для приведения его (а возможно ещё и целого дерева связанных объектов) в нужное состояние может потребоваться ещё n-ное число строчек в коде теста, тогда как в динамике у нас есть "старый" экземпляр, и надо только запустить изменённый метод.
Хотя, конечно, это довольно упрощённая картина, но всё-таки есть, на мой взгляд бенефиты у динамики, но эти они:
1. могут быть не сильно нужны для конкретной задачи (хотя тут тоже не всё понятно, и это может определяться предпочтениями/предрассудками программиста/проектировщика)
2. пребуют несколько иного подхода к разработке от программиста (не такая это общеупотребительная практика, насколько я понимаю)
Re[7]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.11.06 08:44
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Ну, да, ну, да. Придумывай сказки. Волшебная командная строка и ужасный набор страшных действий.


VD>Вот только по жизни все с точностью на оборот. Изменить строку в проекте и нажать F5 или долго возиться вспоминая что нужно набить в командной строке чтобы что-то получить.


Я специально же написал, что подход к разработке меняется, если ты его не пробовал и пробовать не хочешь — это не значит, что другим людям он не может быть очень удобен и привычен
Лично про себя на данный момент такое сказать не могу (с REPL больше "баловался", чем целенаправленно работал), но в принципе подход мне очень нравится.
Плюс есть отзывы других, более известных людей (скажем, на LISP этот подход используется изначально).
Если для тебя мнения других людей, сильно отличающиеся от твоего — сказки, то чтож, остаётся пожать плечами.
Re[8]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.06 11:18
Оценка: :)
Здравствуйте, Курилка, Вы писали:

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


VD>>Ну, да, ну, да. Придумывай сказки. Волшебная командная строка и ужасный набор страшных действий.


VD>>Вот только по жизни все с точностью на оборот. Изменить строку в проекте и нажать F5 или долго возиться вспоминая что нужно набить в командной строке чтобы что-то получить.


К>Я специально же написал, что подход к разработке меняется, если ты его не пробовал и пробовать не хочешь


Я его пробовал. И больше пробовать не хочу.

К>Если для тебя мнения других людей, сильно отличающиеся от твоего — сказки, то чтож, остаётся пожать плечами.


Мнения "других" людей — это мнение долей процента супротив мения большинства.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Мои мысли по теме Статика sv. Динамика
От: Mirrorer  
Дата: 09.11.06 11:42
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Есть четкая уверенность, что как только звучит апелляция к опыту работы, то можно с уверенностью говорить о кривизне обсуждаемой вещи.

Очень спорно имхо.

Даже для того, чтобы научиться читать необходим опыт.
Для того, чтобы научиться говорить нужен опыт.

Для того, чтобы научиться кушать китайскими палочками тоже нужен опыт.
Для того, чтобы научиться кушать ножом и вилкой нужен опыт.

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

P.S. Я в курсе, что аналогии зачастую демагогия.
... << RSDN@Home 1.2.0 3 Doors Down — Loser >>
Re: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.06 19:59
Оценка: :)
Здравствуйте, VladD2, Вы писали:

Ну, что же. Можно подытожить. Список так никто и не расширил. Что и требовалось доказать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.06 23:50
Оценка: +1
Здравствуйте, FR, Вы писали:

FR>5. Утиная типизация и вообще бесплатное обобщенное программирование.


Кури ОКамл — тстатически типизированный язык с утиной типизацией.

Что до бесплатности, то курим сыр в мышеловках. Плата за "бесплатность" — тормоза и ошибки, а так же их более позднее обнаружение.

FR>6. eval и все с ним связанное.


Кури динамическую компиляцию.

FR>7. Динамика гораздо удобнее как склеевающий и настроечый язык,


Да, да. Клей очень нужен чтобы склеивать разбитые вещи и замазывать щели.
Если это твой путь, то таки да. Заплатки ставить с клее легче.

Если же серьезно. Приличные языки не нуждаются в клее. Они сами если что себя склюят. Это вообще какой-то лженаучный миф. Что есть этот мифический "клей"? Что мешает тому же C# выступать в качестве клея? Другими словами, есть какие-то объективные критерии определяющие то, что язык может быть клеем, или не может?

FR>особенно для непрофессионалов.


Это ты о кухарках в управлении государством?

FR>8. Скриптование.


А это что-такое? Ты же тут всю плеш проел, что Питн не скрипт, а динамический язык? Опять же. У этого чуда "скриптования" есть объективные показатели?
Лично я даже слова то такого не знаю в русском.

Подытоживаем... Снова попытки притянуть за уши какю-то фигню. Жанглирование терминами с целью виртуально увеличить количество сущнсотей за счет пречисления их синонимов. Но в итоге все тоже самое. Отсутвие реальных обоснований.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Мои мысли по теме Статика sv. Динамика
От: Dr.Gigabit  
Дата: 10.11.06 14:23
Оценка: :)
Здравствуйте, FR, Вы писали:

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


VD>>Здравствуйте, Андрей Коростелев, Вы писали:


АК>>>Их массовости мнения не следует, что это мнение верно.


VD>>Это не имеет значения. Главно, что мнение одной белой вороны точно не является определяющим.


FR>Есть исключения, если дело происходит на RSDN и ворона (или их маленькая стайка) исповедуют Nemerle, то мнение сразу становится очень даже определяющим


Скорее всего это особенная ворона, которая взлетела высоко-высоко, куда другие не летают, и увидела что-то, что другим не увидать.
Так выпьем же за то, что бы мы никогда не падали, как бы высоко мы не летали
Re[4]: Мои мысли по теме Статика sv. Динамика
От: GlebZ Россия  
Дата: 10.11.06 16:40
Оценка: :)
Здравствуйте, FR, Вы писали:

GZ>>Но частично оно ведь может доказать неправильность программы?

FR>Что оно? Статическая типизация?
Да.

FR>>>И наооборот для алгоритмов с жесткими условиями необходимы обширные тесты, которые нивелируют типизацию.

GZ>>В честь чего? По крайней мере доказательство выводимости типов можно не делать. В то же время доказательство вывода типов в динамике можно и нужно делать.
FR>Зачем это делать, если функциональность полностью покрыта тестами?
Не все алгоритмы можно покрыть тестами. Ведь даже проверка граничных условий не дает полной гарантии правельности результата. Нельзя полностью проверить например компилятор поскольку входных параметров может быть слишком большое количество. Вобщем ситуация со стат. и дин. языками тут не сильно различается.

FR>>>СТЯП позволяют в runtime подменить метод у класса?

FR>А при чем тут полиморфизм?
А это и есть полиморфизм. То бишь позднее связывание. Кроме того, есть еще делегаты, что практически аналогично. Может быть ты хотел сказать добавить новый метод?
FR>JScript.Net не СТЯП.
Самое интересное что как раз статически компилируемый. При этом он не потерял ни одно из свойств динамического языка JavaScript.(кроме конечно дин. компиляции). Прототипирование там есть.

FR>>>Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина

GZ>>Занятно. Это ты доказал утверждение Влада.
FR>Какое?
О том что выразительность зависит от самого языка а не от того, какой он — динамически или статически компилируемый.

FR>В С++ не бесплатное, наооборот во многом неоправданно слишком усложненное. Под ценой имеется в виду цена для программиста а не для производительности программы.

В данном случае ведь тоже не все однозначно. Утиная типизация хороша только по месту. Иначе получаешь больше вреда чем пользы.

FR>>>7. Динамика гораздо удобнее как склеевающий и настроечый язык, особенно для непрофессионалов.

GZ>>Почти соглашусь но одно но. Выражение особенно для непрофессионалов в корне неверное.
FR>Правильнее будет для непрофессиональных программистов.
FR>Он не новичок, а скажем так скорее не программист а настройщик. И чем проще язык освоить и использовать тем для него лучше.
Тогда лучше сказать для непрофессиональных небольших программ. Кстати большинство таких языков было сделано именно с подобной целью.

FR>И какого именно?

FR>По моему ты что-то путаешь. Или мы пользуемся разной терминологией. В общем дай свои определения, а то мне уже стало казатся что ты не допускаешь существования строготипизированных динамических языков.
Допускаю, но в меру. Например только что попробывал в python.
def fib(n):
    """Fibonachi series less than n"""
    a, b = 0, 1
    while b < n:
        print b
        a, b = b, a+b

fib(2000)
fib("2000")

Угадай, что мне сказал строготипизированный язык python когда я выполнил fib("2000")? Да ничего, о просто ушел в бесконечный цикл.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Мои мысли по теме Статика sv. Динамика
От: Андрей Хропов Россия  
Дата: 11.11.06 11:08
Оценка: +1
Здравствуйте, FR, Вы писали:

GZ>>>>Но частично оно ведь может доказать неправильность программы?

FR>>>Что оно? Статическая типизация?
GZ>>Да.

FR>По мелочи да, но при этом не бесплатно для пишущего, приходится всегда писать так чтобы компилятор делал эти проверки даже если они и не нужны, и приходится обходить типизацию когда она мешает.


Она не мешает, она помогает.
А если надо что-то обходить то это и должно быть сложно, чтобы не хотелось это делать ибо это потенциальный источник багов.

Для меня программа с типами выглядит более понятной, особенно если нормальные наименования для переменных.
В динамике все просто пока простые типы данных — строки, числа. А если структуры или классы то уже все становится запутанным.

FR>>>Зачем это делать, если функциональность полностью покрыта тестами?

GZ>>Не все алгоритмы можно покрыть тестами. Ведь даже проверка граничных условий не дает полной гарантии правельности результата. Нельзя полностью проверить например компилятор поскольку входных параметров может быть слишком большое количество. Вобщем ситуация со стат. и дин. языками тут не сильно различается.

FR>Так я про-то же оба не дают гарантий.


Re[49]: JRuby, RubyCLR, IronPython &mdash; зачем?
Автор: Андрей Хропов
Дата: 08.11.06
.

FR>>>>>СТЯП позволяют в runtime подменить метод у класса?

FR>>>А при чем тут полиморфизм?
GZ>>А это и есть полиморфизм. То бишь позднее связывание. Кроме того, есть еще делегаты, что практически аналогично. Может быть ты хотел сказать добавить новый метод?

FR>Без разницы, полиморфизм слишком жестко ограничен.


В смысле? Полиморфизм — это когда одинаково написанный код работает по-разному в зависимости от того какие типы используются.
А что не ограничено?

FR>>>JScript.Net не СТЯП.

GZ>>Самое интересное что как раз статически компилируемый. При этом он не потерял ни одно из свойств динамического языка JavaScript.(кроме конечно дин. компиляции). Прототипирование там есть.

FR>И что? Гибридных языков и без него прилично, например диалекты лиспа или Dylan.


Ну и хорошо . Я за такие языки. Да и очевидно за ними будущее.

FR>>>>>Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина

GZ>>>>Занятно. Это ты доказал утверждение Влада.
FR>>>Какое?
GZ>>О том что выразительность зависит от самого языка а не от того, какой он — динамически или статически компилируемый.

FR>Нет Влад удтверждал что статические языки более выразительные.


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

GZ>>В данном случае ведь тоже не все однозначно. Утиная типизация хороша только по месту. Иначе получаешь больше вреда чем пользы.


FR>Это да, как и с любыми другими возможностями.


Вот в том то и дело что в динамике она всегда "включена".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Мои мысли по теме Статика sv. Динамика
От: Андрей Хропов Россия  
Дата: 11.11.06 13:02
Оценка: +1
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Андрей Хропов, Вы писали:


АХ>>Здравствуйте, FR, Вы писали:


GZ>>>>>>Но частично оно ведь может доказать неправильность программы?

FR>>>>>Что оно? Статическая типизация?
GZ>>>>Да.

FR>>>По мелочи да, но при этом не бесплатно для пишущего, приходится всегда писать так чтобы компилятор делал эти проверки даже если они и не нужны, и приходится обходить типизацию когда она мешает.


АХ>>Она не мешает, она помогает.


FR>Зависит от ситуации.

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

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

АХ>> А если надо что-то обходить то это и должно быть сложно, чтобы не хотелось это делать ибо это потенциальный источник багов.


FR>В программировании куда ни ткни везде есть потенциальные источники багов


Ну вот языки и развиваются в том направлении чтобы уменьшить количество и качество этих источников.

АХ>>Для меня программа с типами выглядит более понятной, особенно если нормальные наименования для переменных.


FR>Это вопрос привычки и личных предпочтений.

FR>Опять же есть места где на самом деле аннотация типов полезна и улучшает читабельность(например публичные интерфейсы) и есть где она ничего кроме бесполезного шума не вносит (большинство локального кода)

Авторы Немерле, Скалы и я с тобой согласны .

АХ>>В динамике все просто пока простые типы данных — строки, числа. А если структуры или классы то уже все становится запутанным.


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


Я не про это — я про понимание сигнатур:

def print_name(name,surname): # понятно, что скорее всего name и surname - это строки
 ...
 
def post_mail(address,message_body,pop3_server): # непонятно в каком формате address, body и server
    ...                                               
    # то есть конечно наверное где-то эти структуры описаны, но какие конкретно сразу непонятно


FR>>>Так я про-то же оба не дают гарантий.


АХ>>Re[49]: JRuby, RubyCLR, IronPython &mdash; зачем?
Автор: Андрей Хропов
Дата: 08.11.06
.


FR>??


Advocates of strongly typed languages such as ML and Haskell have suggested that almost all bugs can be considered type errors, if the types used in a program are sufficiently well declared by the programmer or inferred by the compiler

(и ссылаются на статью ссылаются на статью Dependent Types in Practical Programming).

На самом деле вот простой пример:

int ComputeTime(int hours, int minutes, int seconds)
{
    return ((hours*60 + minutes)*60+seconds);
}

int main()
{
    int sec = ComputeTime(15,5,45);  // нормально
    int min = ComputeTime(15,5,45);  // перепутали что считает в минутах а не секундах - баг!
    int sec1 = ComputeTime(45,5,15); // перепутали местами часы и секунды - баг!
    int sec2 = ComputeTime(45,5,15); // при этом часы > 24 - но компилятор пропустил
    return 0;
}


Другой вариант
#include <cassert>

typedef unsigned int uint;

template<uint Bound> class BoundedVal
{
        uint _val;
    public:        
        BoundedVal(uint val) : _val(val) { assert(_val < Bound); }
        uint operator()(){ return _val; }
};

namespace Time
{
    class Seconds : public BoundedVal<60>
    {
    public: Seconds(uint sec) : BoundedVal<60>(sec) {}
    };
    class Minutes : public BoundedVal<60>
    {
    public: Minutes(uint min) : BoundedVal<60>(min) {}
    };
  class Hours : public BoundedVal<24>
    {
    public: Hours(uint hrs) : BoundedVal<24>(hrs) {}
    };
}

Time::Seconds ComputeTime(Time::Hours hours, Time::Minutes minutes, Time::Seconds seconds)
{
    return Time::Seconds((hours()*60 + minutes())*60+seconds());
}

int main()
{
  using namespace Time;
  Seconds sec = ComputeTime( Hours(15), Minutes(5), Seconds(45) ); //ок
  //Minutes min = ComputeTime( Hours(15), Minutes(5), Seconds(45) ); //ошибка компиляции - несоответствие результата
  //Seconds sec1 = ComputeTime(Seconds(45),Minutes(5),Hours(15) ); // ошибка компиляции - несоответствие типов параметров
  Seconds sec2 = ComputeTime(Hours(45),Minutes(5),Seconds(15) ); // 1) вряд ли кто-то напишет Hours(45)
                                                                                                                             // 2) ошибка в рантайме - часы > 24.
  return 0;
}


Да, код занял больше места (но это конкретно в C++!), но зато мы получили более безопасное решение.

FR>>>>>>>СТЯП позволяют в runtime подменить метод у класса?

FR>>>>>А при чем тут полиморфизм?
GZ>>>>А это и есть полиморфизм. То бишь позднее связывание. Кроме того, есть еще делегаты, что практически аналогично. Может быть ты хотел сказать добавить новый метод?

FR>>>Без разницы, полиморфизм слишком жестко ограничен.


АХ>>В смысле? Полиморфизм — это когда одинаково написанный код работает по-разному в зависимости от того какие типы используются.

АХ>>А что не ограничено?

FR>утиная типизация в динамических языках.


Так это частный случай полиморфизма: здесь.

FR>>>Нет Влад удтверждал что статические языки более выразительные.


АХ>>Нет, Влад как раз утверждал что они могут быть не менее выразительными чем динамические.


FR>Может его самого спросим?


4. Код на ДТЯП (динамически типизированные языки программирования) меньше и его легче держать в голове. Это откровенная лож. Но эта лож пожалуй чаще всего повторяется поклонниками ДТЯП. А чтобы эта лож не выглядила очень уж явно она всегда преподносится на фоне ЯП вроде С и С++ чья выразительность уже давно оставляет желать лучшего. Правда же заключается в том, что выразительность языка (а именно она определяет сколько кода нужно для выражения одной мысли) определяется не типом типизации, а количеством и качеством реализованных в них языковых конструкций (и/или средств расширения языка). Так ДТЯП чаще всего пиаримые на этом форуме — Питон и Руби существенно проигрывают как ДТ Эрлэнгу, так и СТ Nemerle-у просто потому, что в их арсенале нет таких мощных средств как алгебраические типы и сопоставление с образцом.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.06 19:51
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Пока что нет, хотя я не вижу причин, почему бы не сделать подобную поддержку полноценной. Технических препятствий, например, для платформы дотнет и языка C# нет, надо просто потратить на это определенное кол-во времени и ср-в.


По-моему интерактивности более чем достаточно. Конечно есть куда развиваться, но все же, то что есть сейчас меня полностью устраивает.

V>Немного не так.


V>1. В "стандартном режиме" запуск программы всегда предполагает лишь одну точку входа, пожтому "добраться" до тестируемого участка не всегда легко.


Это откровенная не правда. Путей "добраться" до метода тучи. В C# ты можешь тупо вызвать метод из окна Imediate. Кроме тогда всегда можно создать простенькое консольное приложение, кодключить к нему отлаживамую сборку и напрямую вызвать нужные методы.

V>2. Средства, типа NUnit немного помогают, до тех пор, пока кол-во размеченных тестов не переваливает за несколько сотен. Тогда эти ср-ва становятся откровенной обузой при попытке организовать с их помощью интерактивный режим разработки.


Несогласен с этим мнением. Да и это не динамика. Тесты на каждый чих просто не нужны.

V>3. Некоторые классы задач требуют предварительной инициализации окружения. Например у нас сервак "встает" минимум 10-15 сек.


Я конечно вас сочусвтую. Фиговые у вас проектировшики. Но эту проблему вы бы получили и в динамике. Конечно приятно, что пое что можно было бы поправить без перезапуска, но запуск все равно делать пришлось бы. И если у вас на компилируемом языке получается 15 сек., то на скрипте вы получили бы уже минуту и более.

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

V>Повторю, недостаток лишь в текущем качестве популярных инструментов для статических языков на динамических платформах.


Согласен, что динамические возможности модификации и отладки статических платформ можно довести до уровня близкого к скриптам. Но по-моему и так очень неплохо.

V>По мне, статическая типизация — почти всегда плюс, но помимо этого мне нравится "лабораторно-исследовательский" режим работы для целого класса задач.


Аналогично. Но мне хватает того что есть сейчас. Единственное что мне мешает — это всяческого рода тормоза. Например, перекомпиляция немерлового компилятора занимает минуту. Это делает процесс его модификации дейсвительно затянутым и не интерактивным. А вот комплияция интеграции занимает секунду и ее развивать в исследовательском режиме милое дело.

V>Я уже высказвал свое ИМХО, что любители динамических языков любят их скорее за своеобразную организацию труда при их использовании. Дайте это же в мир статических языков (типа макроса "late" в N), и все будет в шоколаде.


Незнаю. Я ни разу не использвал late и даже желания не возникало. Согласен, что повышение интерактивности разработки — это хорошо, но считаю, что рассуждения о неинтерактивности текущих версий языков и сред натянутым.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.11.06 21:25
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Это очень субъективный на мой взгляд фактор и зависит от привычек, вон Вольфхаунд неделями пишет код до компиляции вроде как


Мне кажется, что твой смайлик сам по себе отвечает на твое же замечание. Плюс, уверен, что если мы спросим Вольфхаунда о том является ли положительным моментом вомможность быстро компилироваться и запускаться или вообще править код на ходу, то он скрее всего ответит — да.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.11.06 22:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Курилка, Вы писали:


К>>Это очень субъективный на мой взгляд фактор и зависит от привычек, вон Вольфхаунд неделями пишет код до компиляции вроде как


VD>Мне кажется, что твой смайлик сам по себе отвечает на твое же замечание. Плюс, уверен, что если мы спросим Вольфхаунда о том является ли положительным моментом вомможность быстро компилироваться и запускаться или вообще править код на ходу, то он скрее всего ответит — да.


Ну подождём лично его, но там он говорил вроде как, что как раз эта возможность там не была важна (хотя такая ситуация лично мне кажется странной).
А про REPL и задачи, больше заточенные на прототипирование, ты воздержишься от комментария?
Re[4]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.11.06 22:20
Оценка:
Здравствуйте, Курилка, Вы писали:

К>А про REPL и задачи, больше заточенные на прототипирование, ты воздержишься от комментария?


Конкретно про REPL — воздержусь, так как незнаком с ним.

Про прототипирование могу сказат. Это одна из мантр потвотяемая динамщиками. Вот только современные статически типизированные языки без проблем позволяют быстро и качественно делать прототипы (если я правильно понимаю этот термин). Так что приемуществ тут особых нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Мои мысли по теме Статика sv. Динамика
От: AndreiF  
Дата: 09.11.06 08:57
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Я специально же написал, что подход к разработке меняется


Подход к разработке чего? Он бывает очень разный в разных областях работы.
В области бизнес-программ для предприятий такой подход, наверно, очень удобен. В других областях он может быть вообще неприменим.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.11.06 09:10
Оценка:
Здравствуйте, AndreiF, Вы писали:

AF>Здравствуйте, Курилка, Вы писали:


К>>Я специально же написал, что подход к разработке меняется


AF>Подход к разработке чего? Он бывает очень разный в разных областях работы.

AF>В области бизнес-программ для предприятий такой подход, наверно, очень удобен. В других областях он может быть вообще неприменим.

Блин, ты ветку читал?
Цитирую сам себя:

Так что, имхо, каждому своё, и, наверное, каждой задаче своё, т.к. нужная интерактивность может ею определяться.


и

1. могут быть не сильно нужны для конкретной задачи (хотя тут тоже не всё понятно, и это может определяться предпочтениями/предрассудками программиста/проектировщика)


ты с этим споришь?
И расскажи про "другие области" — я не спорю, что их нет, мне просто интересно, где интерактивность при разработке может мешать...
Re[10]: Мои мысли по теме Статика sv. Динамика
От: AndreiF  
Дата: 09.11.06 09:18
Оценка:
Здравствуйте, Курилка, Вы писали:

К>И расскажи про "другие области" — я не спорю, что их нет, мне просто интересно, где интерактивность при разработке может мешать...


Я так думаю — чем сложнее внутреннее устройство софта, тем больше вероятность того, что излишняя интерактивность будет только мешать. ИМХО
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.11.06 09:39
Оценка:
Здравствуйте, AndreiF, Вы писали:

AF>Здравствуйте, Курилка, Вы писали:


К>>И расскажи про "другие области" — я не спорю, что их нет, мне просто интересно, где интерактивность при разработке может мешать...


AF>Я так думаю — чем сложнее внутреннее устройство софта, тем больше вероятность того, что излишняя интерактивность будет только мешать. ИМХО


Не знаю, не вижу особой связи между этими вещами.
Просто при интерактивности ты "по живому" сможешь попробовать сценарии, а при статике — тесты гонять.
И что такое "сложнее"? Большое число слабосвязных компонент? Тогда их можно отдельно тестить и "играться" с ними.
Если же монолитное приложение — то, думаю, возможно это проблемы дизайна.
Re[13]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.11.06 10:20
Оценка:
Здравствуйте, Mirrorer, Вы писали:

M>Для более менее сложного сценария, необходимо, чтобы система находилась в определенном состоянии. Т.е. были созданы все пред-условия для начала выполнения юз кейса какого-нибудь. А выполнение какого-то сценария переводит систему в другое состояние. И для запуска того же сценария, но с измененным методом допустим каким-нибудь необходимо будет сначала привести систему в исходное состояние. А здесь уже возможны варианты


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

К>>И что такое "сложнее"? Большое число слабосвязных компонент? Тогда их можно отдельно тестить и "играться" с ними.

M>+1 Но тестить и играться можно и в юнит тестах. конечно цикл Red green refactor из TDD в статике будет скорее всего медленнее, чем REPL в динамике, но я не думаю, что это будет НАМНОГО медленнее. А если нужно определенное состояние для начала игры, то и для динамики придется делать перезапуск.

Вопрос в том, что тесты могут готовиться целенаправленно и заранее (и возможно другими людьми), тогда как в целях разработки сценарии могут придумываться на лету и видоизменяться. Я не говорю, что REPL полностью заменяет тесты, они вполне хорошо могут жить вместе
Re[14]: Мои мысли по теме Статика sv. Динамика
От: Mirrorer  
Дата: 09.11.06 10:28
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Вопрос в том, что тесты могут готовиться целенаправленно и заранее (и возможно другими людьми), тогда как в целях разработки сценарии могут придумываться на лету и видоизменяться.

В таком случае, REPL будет конечно удобнее.

К>Я не говорю, что REPL полностью заменяет тесты, они вполне хорошо могут жить вместе

А там, где нету REPL его можно эмулировать юнит-тестами
... << RSDN@Home 1.2.0 The Killers — Where The White Boys Dance (Bonus Track) >>
Re[2]: Мои мысли по теме Статика sv. Динамика
От: WolfHound  
Дата: 09.11.06 11:40
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Это очень субъективный на мой взгляд фактор и зависит от привычек, вон Вольфхаунд неделями пишет код до компиляции вроде как

Вулфхаунд может работать в любом режиме. И не страдает догматизмом в отличии от...
Там где удобно не компилироватся неделями я могу не компилировать неделями. Там где удобно запускать компиляцию в место сохранения там я запускаю компиляцию вместо сохранения.
К>А некоторые очень любят REPL, а его на статике врядли получишь
Дает преймущества только если нужно разобратся с совершенно не знакомой средой. Если среда знакома то можно и без этого работать не потеряв в производительности, а если это какойнибудь C# с ReSharper'ом то еще и быстрее.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.11.06 13:35
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Курилка, Вы писали:


К>>Это очень субъективный на мой взгляд фактор и зависит от привычек, вон Вольфхаунд неделями пишет код до компиляции вроде как

WH>Вулфхаунд может работать в любом режиме. И не страдает догматизмом в отличии от...
От кого? Это должен был быть тонкий укол?

К>>А некоторые очень любят REPL, а его на статике врядли получишь

WH>Дает преймущества только если нужно разобратся с совершенно не знакомой средой. Если среда знакома то можно и без этого работать не потеряв в производительности, а если это какойнибудь C# с ReSharper'ом то еще и быстрее.

Но, конечно, аргументы тут врядли получатся, кроме слов про "мнение большинства" (не твои слова, но я говорю про ситуацию в общем), а оно собственно понятно, поэтому обсуждение теряет смысл.
Re[9]: Мои мысли по теме Статика sv. Динамика
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 09.11.06 15:11
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Мнения "других" людей — это мнение долей процента супротив мения большинства.


Их массовости мнения не следует, что это мнение верно.
-- Андрей
Re[10]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.06 19:59
Оценка:
Здравствуйте, Андрей Коростелев, Вы писали:

АК>Их массовости мнения не следует, что это мнение верно.


Это не имеет значения. Главно, что мнение одной белой вороны точно не является определяющим.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.06 23:50
Оценка:
Здравствуйте, FR, Вы писали:

FR>Есть исключения, если дело происходит на RSDN и ворона (или их маленькая стайка) исповедуют Nemerle, то мнение сразу становится очень даже определяющим


Это, к сожалению, не совсем так. Я не волшебник. Я только учусь. (с) паж из Золушки.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Мои мысли по теме Статика sv. Динамика
От: GlebZ Россия  
Дата: 10.11.06 11:54
Оценка:
Здравствуйте, FR, Вы писали:

FR>Можно посмотреть на доказательства?

FR>Наверно ты про математическую верификацию программ? Правда императивные (и гибридные) языки со статической типизацией пролетают мимо такаой верификации.
Но частично оно ведь может доказать неправильность программы?


FR>И наооборот для алгоритмов с жесткими условиями необходимы обширные тесты, которые нивелируют типизацию.

В честь чего? По крайней мере доказательство выводимости типов можно не делать. В то же время доказательство вывода типов в динамике можно и нужно делать.

VD>>Пока что из преимуществ динамики я слышал:

VD>>1. Отсутствие аннотаций типов замусоривающих код. Мало того, что это утверждение спорно (многие считают аннотацию типов средством документирования и дополнительной информацией), так оно еще и ложно, так как есть очень нехилые СТЯП (статически типизированные языки программирования) занимающиеся выводом типов и не требующие наличия аннотаций или сокращающие их применение до мизерных величин.
VD>>2. Программу можно сделать гибче принимая решение в runtime-е. Да, само по себе это так. Но современные СТЯП без проблем позволяют делать это. А во многих случаях помогает метапрограммирование. Оно к тому же дает более надежный и более производительный код.

FR>СТЯП позволяют в runtime подменить метод у класса?

А полиформизм это что? (это если мы говорим о строгой типизации). JScript.Net — типизация вообще не мешает.
FR>Метапрограммирование абсолютно паралельно типизации. И с успехом применяется и в динамических языках, кстати часто для ограничения излишней гибкости
+1. Но он позволяет создавать новые типы.

VD>>Но эта лож пожалуй чаще всего повторяется поклонниками ДТЯП. А чтобы эта лож не выглядила очень уж явно она всегда преподносится на фоне ЯП вроде С и С++ чья выразительность уже давно оставляет желать лучшего. Правда же заключается в том, что выразительность языка (а именно она определяет сколько кода нужно для выражения одной мысли) определяется не типом типизации, а количеством и качеством реализованных в них языковых конструкций (и/или средств расширения языка). Так ДТЯП чаще всего пиаримые на этом форуме — Питон и Руби существенно проигрывают как ДТ Эрлэнгу, так и СТ Nemerle-у просто потому, что в их арсенале нет таких мощных средств как алгебраические типы и сопоставление с образцом.

FR>Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина
Занятно. Это ты доказал утверждение Влада.

FR>5. Утиная типизация и вообще бесплатное обобщенное программирование.

в С++ бесплатное обобщенное программирование.(если я правильно понял твою категорию цены) Не сказал бы что всегда это харашо.
FR>6. eval и все с ним связанное.
жуть.
FR>7. Динамика гораздо удобнее как склеевающий и настроечый язык, особенно для непрофессионалов.
Почти соглашусь но одно но. Выражение особенно для непрофессионалов в корне неверное.
1. Построить качественную программу новичку значительно сложней. В силу того компилятор меньше помогает разработчику. Новичку нужно делать не только программу, но также и тесты. Новичку нужно работать по более строгому сценарию.
2. Не все иогурты одинаковы полезны(если мы говорим о прототипировании). В каждом конкретном случае нужно выбрать конкретный иогурт иначе потом ..... В статике(обычно) все значительно проще и легче поскольку инструментарий для типов более ограничен.
3. В стат. языке мусорку получить легко. В динамике мусорку с его трансформацией типа получить на порядок легче.

ЗЫ. Не пойму почему утиную типизацию причисляют именно к динамике. Вообще-то это свойство стоготипизированного или слаботипизированного языка.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 10.11.06 12:53
Оценка:
Здравствуйте, GlebZ, Вы писали:

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


FR>>Можно посмотреть на доказательства?

FR>>Наверно ты про математическую верификацию программ? Правда императивные (и гибридные) языки со статической типизацией пролетают мимо такаой верификации.
GZ>Но частично оно ведь может доказать неправильность программы?

Что оно? Статическая типизация?

FR>>И наооборот для алгоритмов с жесткими условиями необходимы обширные тесты, которые нивелируют типизацию.

GZ>В честь чего? По крайней мере доказательство выводимости типов можно не делать. В то же время доказательство вывода типов в динамике можно и нужно делать.

Зачем это делать, если функциональность полностью покрыта тестами?


FR>>СТЯП позволяют в runtime подменить метод у класса?

GZ>А полиформизм это что? (это если мы говорим о строгой типизации). JScript.Net — типизация вообще не мешает.

А при чем тут полиморфизм?
JScript.Net не СТЯП.

FR>>Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина

GZ>Занятно. Это ты доказал утверждение Влада.

Какое?

FR>>5. Утиная типизация и вообще бесплатное обобщенное программирование.

GZ>в С++ бесплатное обобщенное программирование.(если я правильно понял твою категорию цены) Не сказал бы что всегда это харашо.

В С++ не бесплатное, наооборот во многом неоправданно слишком усложненное. Под ценой имеется в виду цена для программиста а не для производительности программы.

FR>>6. eval и все с ним связанное.

GZ>жуть.

Полезная вещь если правильно и к месту применять.

FR>>7. Динамика гораздо удобнее как склеевающий и настроечый язык, особенно для непрофессионалов.

GZ>Почти соглашусь но одно но. Выражение особенно для непрофессионалов в корне неверное.

Правильнее будет для непрофессиональных программистов.

GZ>1. Построить качественную программу новичку значительно сложней. В силу того компилятор меньше помогает разработчику. Новичку нужно делать не только программу, но также и тесты. Новичку нужно работать по более строгому сценарию.


Он не новичок, а скажем так скорее не программист а настройщик. И чем проще язык освоить и использовать тем для него лучше.

GZ>2. Не все иогурты одинаковы полезны(если мы говорим о прототипировании). В каждом конкретном случае нужно выбрать конкретный иогурт иначе потом ..... В статике(обычно) все значительно проще и легче поскольку инструментарий для типов более ограничен.


В прототипировании как раз статика это гиря на ноге, пользы никакой а таскать приходится.

GZ>3. В стат. языке мусорку получить легко. В динамике мусорку с его трансформацией типа получить на порядок легче.


Какая еще трансформация типа?

GZ>ЗЫ. Не пойму почему утиную типизацию причисляют именно к динамике.


В статике она обычно выходит куцой и ограниченной.

GZ>Вообще-то это свойство стоготипизированного или слаботипизированного языка.


И какого именно?
По моему ты что-то путаешь. Или мы пользуемся разной терминологией. В общем дай свои определения, а то мне уже стало казатся что ты не допускаешь существования строготипизированных динамических языков.
Re[5]: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 11.11.06 06:47
Оценка:
Здравствуйте, GlebZ, Вы писали:

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


GZ>>>Но частично оно ведь может доказать неправильность программы?

FR>>Что оно? Статическая типизация?
GZ>Да.

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

FR>>>>И наооборот для алгоритмов с жесткими условиями необходимы обширные тесты, которые нивелируют типизацию.

GZ>>>В честь чего? По крайней мере доказательство выводимости типов можно не делать. В то же время доказательство вывода типов в динамике можно и нужно делать.
FR>>Зачем это делать, если функциональность полностью покрыта тестами?
GZ>Не все алгоритмы можно покрыть тестами. Ведь даже проверка граничных условий не дает полной гарантии правельности результата. Нельзя полностью проверить например компилятор поскольку входных параметров может быть слишком большое количество. Вобщем ситуация со стат. и дин. языками тут не сильно различается.

Так я про-то же оба не дают гарантий.

FR>>>>СТЯП позволяют в runtime подменить метод у класса?

FR>>А при чем тут полиморфизм?
GZ>А это и есть полиморфизм. То бишь позднее связывание. Кроме того, есть еще делегаты, что практически аналогично. Может быть ты хотел сказать добавить новый метод?

Без разницы, полиморфизм слишком жестко ограничен.

FR>>JScript.Net не СТЯП.

GZ>Самое интересное что как раз статически компилируемый. При этом он не потерял ни одно из свойств динамического языка JavaScript.(кроме конечно дин. компиляции). Прототипирование там есть.

И что? Гибридных языков и без него прилично, например диалекты лиспа или Dylan.

FR>>>>Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина

GZ>>>Занятно. Это ты доказал утверждение Влада.
FR>>Какое?
GZ>О том что выразительность зависит от самого языка а не от того, какой он — динамически или статически компилируемый.

Нет Влад удтверждал что статические языки более выразительные.

FR>>В С++ не бесплатное, наооборот во многом неоправданно слишком усложненное. Под ценой имеется в виду цена для программиста а не для производительности программы.

GZ>В данном случае ведь тоже не все однозначно. Утиная типизация хороша только по месту. Иначе получаешь больше вреда чем пользы.

Это да, как и с любыми другими возможностями.

FR>>>>7. Динамика гораздо удобнее как склеевающий и настроечый язык, особенно для непрофессионалов.

GZ>>>Почти соглашусь но одно но. Выражение особенно для непрофессионалов в корне неверное.
FR>>Правильнее будет для непрофессиональных программистов.
FR>>Он не новичок, а скажем так скорее не программист а настройщик. И чем проще язык освоить и использовать тем для него лучше.
GZ>Тогда лучше сказать для непрофессиональных небольших программ. Кстати большинство таких языков было сделано именно с подобной целью.

Ну так это и есть скриптование. Но это только одно из возможных применений динамики.

GZ>Угадай, что мне сказал строготипизированный язык python когда я выполнил fib("2000")? Да ничего, о просто ушел в бесконечный цикл.


Это да прокол, операторы сравнения надо менять. Одна из неприятных вещей которые я считаю багом в дизайне языка, оператор сравнения должен уметь сравнивать любые объекты, обосновывается тем что списки могут содержать любой объект и по умолчанию эти объекты должны уметь сравниватся.
Re[7]: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 11.11.06 11:50
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Здравствуйте, FR, Вы писали:


GZ>>>>>Но частично оно ведь может доказать неправильность программы?

FR>>>>Что оно? Статическая типизация?
GZ>>>Да.

FR>>По мелочи да, но при этом не бесплатно для пишущего, приходится всегда писать так чтобы компилятор делал эти проверки даже если они и не нужны, и приходится обходить типизацию когда она мешает.


АХ>Она не мешает, она помогает.


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

АХ> А если надо что-то обходить то это и должно быть сложно, чтобы не хотелось это делать ибо это потенциальный источник багов.


В программировании куда ни ткни везде есть потенциальные источники багов

АХ>Для меня программа с типами выглядит более понятной, особенно если нормальные наименования для переменных.


Это вопрос привычки и личных предпочтений.
Опять же есть места где на самом деле аннотация типов полезна и улучшает читабельность(например публичные интерфейсы) и есть где она ничего кроме бесполезного шума не вносит (большинство локального кода)

АХ>В динамике все просто пока простые типы данных — строки, числа. А если структуры или классы то уже все становится запутанным.


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

FR>>Так я про-то же оба не дают гарантий.


АХ>Re[49]: JRuby, RubyCLR, IronPython &mdash; зачем?
Автор: Андрей Хропов
Дата: 08.11.06
.


??

FR>>>>>>СТЯП позволяют в runtime подменить метод у класса?

FR>>>>А при чем тут полиморфизм?
GZ>>>А это и есть полиморфизм. То бишь позднее связывание. Кроме того, есть еще делегаты, что практически аналогично. Может быть ты хотел сказать добавить новый метод?

FR>>Без разницы, полиморфизм слишком жестко ограничен.


АХ>В смысле? Полиморфизм — это когда одинаково написанный код работает по-разному в зависимости от того какие типы используются.

АХ>А что не ограничено?

утиная типизация в динамических языках.

FR>>>>JScript.Net не СТЯП.

GZ>>>Самое интересное что как раз статически компилируемый. При этом он не потерял ни одно из свойств динамического языка JavaScript.(кроме конечно дин. компиляции). Прототипирование там есть.

FR>>И что? Гибридных языков и без него прилично, например диалекты лиспа или Dylan.


АХ>Ну и хорошо . Я за такие языки. Да и очевидно за ними будущее.


Так и я не против

FR>>>>>>Питон и Руби точно не проигрывают по выразительности Эрлангу, разве для некторых специфичных задач, в более общих задачах эрланг сам им уступает. Nemerle конечно по выразительности во многом лучше, но по краткости до J ему как пешком до пекина

GZ>>>>>Занятно. Это ты доказал утверждение Влада.
FR>>>>Какое?
GZ>>>О том что выразительность зависит от самого языка а не от того, какой он — динамически или статически компилируемый.

FR>>Нет Влад удтверждал что статические языки более выразительные.


АХ>Нет, Влад как раз утверждал что они могут быть не менее выразительными чем динамические.


Может его самого спросим?

АХ>А если выразительность не ухудшается, но имеем дополнительные статические проверки и большую производительность, то зачем нам динамика.


Так вам никто ни навязывает, не нравится не ешьте.
Это же только у поклоников Немерле есть серебряная пуля, остальные не претендуют
Re[9]: Мои мысли по теме Статика sv. Динамика
От: FR  
Дата: 11.11.06 15:08
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

FR>>Зависит от ситуации.

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

АХ>Почему? В OCaml ты всегда не будешь типы указывать.


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

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


Для моих задач питон удобней.

АХ>>> А если надо что-то обходить то это и должно быть сложно, чтобы не хотелось это делать ибо это потенциальный источник багов.



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


АХ>Я не про это — я про понимание сигнатур:


Ну ты вроде говорил про структуры данных
А так конечно надо хоть минимально документировать код.

FR>>??


АХ>

АХ> Advocates of strongly typed languages such as ML and Haskell have suggested that almost all bugs can be considered type errors, if the types used in a program are sufficiently well declared by the programmer or inferred by the compiler

АХ>(и ссылаются на статью ссылаются на статью Dependent Types in Practical Programming).

АХ>На самом деле вот простой пример:


.........

АХ>Да, код занял больше места (но это конкретно в C++!), но зато мы получили более безопасное решение.


Код будет больше не только на C++, но на любом другом языке, ты же вводишь новые сущности, реально это уже совсем другая задача. Тут вопрос в цене если нам нужна большая надежность то придется именно так и писать и плюс еще тестировать, но срок разработки может удлинится (удорожится) в несколько раз. И еще контракты и проверки точно также можно использовать и в динамических языках, конечно контроль будет в run-time но в принципе будет тоже самое (даже этот пример можно почти в 1:1 на питоне переписать).

FR>>утиная типизация в динамических языках.


АХ>Так это частный случай полиморфизма: здесь.


Я понял что выше под полиморфизмом имелись в виду виртуальные функции.
Re[2]: Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.06 19:51
Оценка:
Здравствуйте, DerBober, Вы писали:

DB>Такие рассуждения явно показывают надуманость гипотизы о существовании идеального языка программирования (ИЯП) в отрыве от приложений.


Я устал повторять, что идиал недостижим, но стремление к нему — это то что делает человека человеком.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Мои мысли по теме Статика sv. Динамика
От: ironwit Украина  
Дата: 14.11.06 06:05
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Также нужно иметь в виду что на моих задачах нужно выжать из железа 90%-100% производительности те питон и тем болие руби идут лесом тк тормоза.

можно ли тихонько на ушко намекнуть на решаемые тобой задачи?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Я не умею быть злым, и не хочу быть добрым.
Re: Мои мысли по теме Статика sv. Динамика
От: Lever Россия www.compassplus.ru
Дата: 14.11.06 09:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Тема ушла в полнейший аут. Так что лазить по ней нет никакого желания. Если у кого есть желание, то можете выскаться здесь.


VD>Защитники статической типизации не то что бы верят, во что-то. Они пользуются доказанными фактами. А вот их оппоненты именно что верят. Причем, почему-то споря с защитниками статической типизации, они спорят не с их утверждениями, а с некими вымышленными.


Хочу тоже добавить несколько суждений.
1.Все это относительно. Если абсолютную статику я худо бедно представляю, и предстаквляю ее необходимость. То необходимость абсолютной динамики не представляю. Хоть что-то похожее мы делали.
2. Если представить программу не как единое целое, а как сокупность частей, а лучше всего совсем не как программу, то в разных частях этого большого нечто, могут уживаться и статика и динамика.
3. Я бы различал создание типов и их использование. И отдельно говорил о статике и о динамике и для того идля другого.
Re[3]: Мои мысли по теме Статика sv. Динамика
От: Курилка Россия http://kirya.narod.ru/
Дата: 15.11.06 16:30
Оценка:
Здравствуйте, Кодт, Вы писали:

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


К>>А некоторые очень любят REPL, а его на статике врядли получишь


К>Контрпример: интерпретаторы хаскелла (например, HUGS).


К>СТ в REPL помогает, отсекая простейшие логические ошибки. В лиспе можно ввести какой-нибудь синтаксически корректный бред, а потом удивляться.

К>
К>;(defun bred1 (x) (+ (car x) x))
К>;(defun bred2 (x) (+ (car x) (cdr x)) %% впрочем, это может быть корректным для cons-пары из двух чисел
К>;

К>А хаскелл сразу надаёт по пальцам.

Про "по пальцам" — понятно, но вот достижима ли там искомая гибкость
Есть подозрение (хотя с хагсом игрался очень мало, не специалист), что это будет довольно сложно. Или там "на лету" можно, например, поменять код метода класса? (Хотя вроде классов в хаскеле нет, уже плохо помню )
И что-то не помню, чтобы REPL по отношению к хаскелю применяли. Хотя это, конечно, не показатель.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.