|
Модератор
|
|
Динамически типизированные языки : один вред, никакой пользы31.01.2016, 01:13. Показов 9465. Ответов 177
Метки нет (Все метки)
Я имею ввиду языки, в которых только или почти только используются динамически типизированные данных. Не будем сейчас рассматривать рефлексию, в языках .NET или java – там используются динамические типы, но используется сама рефлексия относительно редко.
Где ещё, якобы нужна динамическая типизация? Для доступа к БД? Не нужна, если сама БД не написана на динамическом языке и/или не специально спроектирована для взаимодействия с динамическим языком. Если посмотреть API конкретных СУДБ (например, oracle, postgreSQL, Firebird/Interbase, SQLite) или ODBC API, то выяснится, что динамическая типизация не нужна. Для JSON ? Нет, не нужна. Библиотеки для работы с JSON реализованы, наверное, для всех распространённых, статически типизированных языков. Метапрограммирование? Смотря какое. Если под ним подразумевать выполнение строки кода введённого пользователем, то может оказаться и нужна. Только это для скриптов. При чём для скриптов без предкомпиляции (хотя бы в байт код). Сейчас 21 век, и код, даже на скрипте, должен вначале хотя бы парситься с проверкой типов весь, что бы не выгребать баги лопатой после жалоб пользователей (тулзы типа JSHint, это эрзацы. Декларации типов должна быть встроены в язык и несоответствия обнаруживаться компилятором.). А если под метапрограммированием понимать перекладывание на компилятор генерацию рутинных, повторяющихся кусков кода, то такое метапрограммирование (как и программирование вообще), предпочтительно типобезопасное и в динамической типизации не нуждается. Сторонники динамических языков часто возражают примерно так «мне нужно, что бы переменная xyz принимала то значение строки, то значение вот с эдакой структурой». Заметим, на практике, если уж мы будем работать с содержимым xyz, то кол-во вариантов конечно, и ограничено логикой программы (да, для выполнения, например, копирования xyz в другую область памяти, нам ничего кроме ссылки и размера не нужно, но не для работы с конкретным её содержимым). А раз так, то xyz может быть алгебраического типа. В pascal можно заменить на запись с вариантами, в С на union и пр. Распространённость динамически типизированных языков я связываю со временем, когда web-сервера были практически только у провайдеров, а они разрешали абонентам использовать на своих страницах почти только perl и php. В те времена ни о какой предкомпиляции и JIT слыхом не слыхивали. Как и о песочницах. Интерпретаторы этих скриптов делали на коленке и каждый помаленьку. По этому они, впрочем как и js, по дизайну напоминают письмо из простоквашино. Потом скрипты «возмужали» и «заматерели», обзавелись кое где JIT-ом, но примитивность динамической типизации осталась. Не даром сейчас полным ходом идёт разработка и внедрение языков со статической типизацией компилируемых в js (TypeScript, Elm), а php держится за счёт инерции мышления (как фортран или кобол), не более. Да, есть ещё вполне динамический, и более свежий Ruby. Ну, дык, его автор сам до того прогал на perlе, стало быть привык к динамической типизации, да и рассчитывал на любителей перловки. Собственно, я что хочу сказать. В конкретном, динамически типизированном скрипте могут быть очень интересные и полезные фенечки за что его могут любить прогеры с ограниченным знанием языков. Только фенечки фенечками, а динамическая типизация бяка. Почему бяка? Ну, легко нагуглить, и навикипедить. Использовать же в компилируемом языке динамическую типизацию – вообще маразм. Исключение – языки выполняемые на виртуальной Erlang машине со встроенной динамической типизацией. Автор (или кто то из разрабов) утверждал что иначе механизм динамической замены кода не получался. Со скрипом, поверим на слово. Тем более, что там стараются контролировать типы на уровне библиотеки.
0
|
|
| 31.01.2016, 01:13 | |
|
Ответы с готовыми решениями:
177
Определите, какие языки знают все школьники и языки, которые знает хотя бы один из школьников Meta Keywords - капля пользы?
|
|
Модератор
|
|||||
| 19.02.2016, 10:43 [ТС] | |||||
|
В статике всё просто. Вы такое представление системной информации, видимо взяли из WMI, которое предназначено для использования в WSH, т.е. из динамических скриптов.
0
|
|||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||
| 19.02.2016, 11:56 | ||||
0
|
||||
|
Модератор
|
|||
| 19.02.2016, 12:23 [ТС] | |||
|
0
|
|||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||
| 22.02.2016, 13:49 | ||||
да и я пишу не на статических языках, а на том что для решения конкретной задачи потребует меньше затрат (во всем). насчет объясняли... объяснять про сферических лошадей и я могу. вспомним это в итоге все 3 пункта были полностью подтверждены "неоправданно усложняет проектирование" - спроектировать ниче не получилось, даже в прототипе "удлиняет сроки реализации" - в динамике рисуется за 5 минут полное решение, в статике минула неделя, а воз все там же "приводит к набуханию проекта" - "Ввод дополнительных буковок ерунда" а их там много наберется обоснование завершено
0
|
||||
|
Модератор
|
|||
| 22.02.2016, 15:27 [ТС] | |||
|
Вывести через WMI описание железа компа (если Вы эту "киллер фичу" в кармане прятали) - это использовать встроенный в винду механизм. Впрочем, всё что надо, можно получить и без него. Краткое резюме: я, в СП, написал более узкое утверждение - не нужны динамически типизированные языки. "Я имею ввиду языки, в которых только или почти только используются динамически типизированные данные." Но, возражения "динамистов" оказались, полностью не серьёзными, и, к тому же, перешли на оспаривание более широкого утверждения: нужны ли динамические типы вообще (а не динамические языки (см. выше)). В результате я получил подтверждение своего первоначального тезиса и склоняюсь к тому что динамические типы не нужны вообще. Аргументы "динамщиков" про "набухания", невозможность статически описать сложные объекты, и что события от гуя можно обрабатывать только скриптами не стоят обсуждения. p.s. Я был бы не прочь услышать аргументы за динамические типы. Но это действительно должно быть что то разумное.
0
|
|||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 24.02.2016, 06:47 | |||
). и это отчасти подтверждается тем, что статический яп от математиков и для математиков не смог вытеснить со своих ниш динамические R и MATLAB.
0
|
|||
|
Модератор
|
|||||
| 24.02.2016, 08:35 [ТС] | |||||
|
Не по теме: Давай покрасим холодильник в чёрный цвет./А для чего?/А просто так./Давай покрасим холодильник в чёрный цвет.
0
|
|||||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|||
| 25.02.2016, 01:03 | |||
|
Добавлено через 3 минуты
0
|
|||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||
| 25.02.2016, 12:32 | |||
|
0
|
|||
|
Модератор
|
||||
| 25.02.2016, 12:37 [ТС] | ||||
|
Сами юнит-тесты для статики упрощаются т.к. не нужно отдельно проверять корректность типов.
0
|
||||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 25.02.2016, 13:41 | |
|
KolodeznyDiver
Мне кажется, что в словах nullxdth нечто интересное всё же есть. В императивном программировании есть определённая тенденция писать код относительно неких "ящиков", с которыми связаны какие-то имена, а не относительно "объектов". Так гораздо удобнее мыслить деструктивные присваивания. Как-то в войнах проскакивала ссылка, где такой подход был сочно назван "place oriented programming". В рамках этого POP подхода "динамический тип" возникает естественно. Если у Вас есть имя s, которое связано с ящиком, то сложно дать этому имени какой-то тип... Сегодня в ящике "Hello Kitty!", а через три деструктивных присваивания -- число с плавающей точкой. Тогда любое выражение, в которое входит такое s, просто не может получить тип, потому что нужно расширить контекст до известного типа s, что можно сделать только уже запустив программу.Когда код оказывается перегружен POP, то статическая типизация уже мешает. Она ничего существенного доказать про код не может, но крутить эти статические метки приходится постоянно. Пример с "компьютерным железом" как раз сформулирован в форме POP: хочу поименованные ящика, где лежит не знаю что. Такая задача решается на уровне динамической типизации естественно, а на уровне объектов со статическими типами -- не очевидно. IMHO
0
|
|
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 25.02.2016, 15:34 | ||
|
Если у тебя слабая динамическая типизация, то unit test вообще ничего не проверит. Если же сильная, то все равно может быть фейл как минимум из-за duck typing'а
0
|
||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|||
| 25.02.2016, 18:22 | |||
|
Если у тебя слабая типизация то и статика мало чем помогает. Посмотреть, например, хотя бы Си. Добавлено через 1 минуту
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 26.02.2016, 03:12 | |||||||
|
чем меньше необходимо знать и иметь ввиду, тем проще. чем проще - тем лучше. вот например, чистая статика:
что это не статика, а динамика. что изменилось? ничего не изменилось, если не считать, что решение в статике эффективнее, а ошибки обнаруживаются времени компиляции, а не выполнения. но это уже ортогонально удобству чтения кода.
0
|
|||||||
|
Модератор
|
||
| 26.02.2016, 10:22 [ТС] | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 26.02.2016, 14:23 | ||
|
для удобства чтения это не принципиально.
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||||||||||
| 26.02.2016, 14:38 | ||||||||||||
|
Сейчас используются тайпклассы для бедных:
0
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||||
| 26.02.2016, 19:13 | ||||||||||||||||||
|
это самый заурядный плюсовый код. что делает функция?
мне не понятно, нафига вы все усложняете? зачем делать сложно, когда можно тоже самое сделать просто? зачем писать много, когда можно получить тоже самое, но писать при этом мало? зачем читать много, когда для понимания достаточно малого количества информации? объясните мне сакральный смысл, пожалуйста. Добавлено через 51 секунду или чукча не в курсе, что такое "ошибки времени компиляции" ?
0
|
||||||||||||||||||
| 26.02.2016, 19:13 | |
|
Как динамически выделять память на один элемент массива? Один обработчик события для нескольких динамически созданных объектов Интерпретируемые языки VS Компилируемые языки В коде динамически наполняется массив и его элементы выводятся на сцену, но выводится только один элемент никакой тип Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|