|
Модератор
|
|
Динамически типизированные языки : один вред, никакой пользы31.01.2016, 01:13. Показов 9548. Ответов 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 - капля пользы?
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||
| 02.03.2016, 15:03 | ||||
|
Можешь прочитать только начало и конец. Ну и вообще вот есть такая статейка по качеству кода http://macbeth.cs.ucdavis.edu/lang_study.pdf
0
|
||||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
||
| 02.03.2016, 22:24 | ||
{-@ ... @-} и прочий сраный ascii-арт, куда приятнее, чем обычные нормальные скобки. Я, право, не понимаю, почему не такие скобки, например: {-[[!!!111 ... 111!!!]]-}: так было бы гораздо круче. Дело вкуса однако.
0
|
||
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
||
| 17.03.2016, 05:37 | ||
|
При обработке спутниковых данных эти самые данные поставляются вендором в самых разных форматах (TIFF, GeoTIFF, HDF, Shapefile, и прочая) с кучей метаданных, с различной внутренней структурой каталогов (как в HDF с его B-деревьями), с различными типами данных внутри (int, float, double, long, string, etc). Ситуация, когда нужно использовать инфу с различных ИСЗ (а стандарта по сути нет, есть EOS со своей терминологией (NASA), но не везде применяют и не всегда) - совмещать, сравнивать, дополнять данные из разных источников - вещь весьма распространенная.
0
|
||
|
Модератор
|
|||
| 17.03.2016, 08:22 [ТС] | |||
|
0
|
|||
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
||||
| 17.03.2016, 10:57 | ||||
|
*** Это, кст, вполне типичная задача, с которой приходится иметь дело. Без проверки типов - не безопасно - да, но зато работает быстро и выглядит проще. А данные нужны сейчас, а не через год, месяц и даже неделю, т.к. от них может, в том числе, зависеть чья-то жизнь (при стихийных бедствиях).
0
|
||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 17.03.2016, 11:10 | ||
![]() Типа: "я не использую subtype полиморфизм в динамических языках, поэтому у меня ничего не тормозит! Ведь нет оверхеда на косвенные вызовы"
0
|
||
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|
| 17.03.2016, 11:17 | |
|
Voivoid, я не сторонник динамической типизации. Я сторонник подхода - каждой задаче свой инструмент. Я не ищу идеальное решение, я ищу эффективное. А на счет проверки типов - в C++ в runtime проверять типы приходится с помощью довольно таки медленных высокоуровневых конструкций (когда счет на микросекунды), в то время как в динамике при хорошей реализации все происходит на низком уровне.
*** Так кто-нибудь предложит решение задачи из поста #165 в статике? Я жду.
0
|
|
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|||
| 17.03.2016, 11:23 | |||
Как ты себе это представляешь-то? ![]()
0
|
|||
|
Модератор
|
|||||
| 17.03.2016, 12:12 [ТС] | |||||
|
0
|
|||||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|||
| 17.03.2016, 14:49 | |||
|
Добавлено через 5 минут
0
|
|||
|
Модератор
|
|||
| 17.03.2016, 15:33 [ТС] | |||
|
0
|
|||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
||
| 17.03.2016, 17:19 | ||
|
0
|
||
|
Модератор
|
||
| 17.03.2016, 18:12 [ТС] | ||
|
0
|
||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 17.03.2016, 18:19 | ||
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 17.03.2016, 18:50 | |||
|
который внезапно будет выполнять весь джентельменский набор медленных операций, по сравнению типов и обеспечению типо-безопасности. любое решение в статике - это то, что под капотом у вашей динамики. решений множество. и самое простое из них: в дебаге делаем проверки типо-безопасномти. в релизе - не делаем. при годном тестировании, это дает надежность почти как у дебага. а скорость - как в релизной статике.
0
|
|||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
||||||||
| 18.03.2016, 11:23 | ||||||||
|
Добавлено через 1 минуту Добавлено через 1 минуту Добавлено через 3 минуты Добавлено через 1 минуту Добавлено через 1 минуту Добавлено через 3 минуты
0
|
||||||||
|
Модератор
|
||||
| 18.03.2016, 15:07 [ТС] | ||||
![]()
0
|
||||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|||||
| 19.03.2016, 14:50 | |||||
|
Чуть наброшу бисера: https://en.wikipedia.org/wiki/... -up_design http://paulgraham.com/progbot.html https://en.m.wikipedia.org/wiki/Worse_is_better Вообще разговор о подходах к проектированию/разработке глубоко дискуссионный. Ты не готов к нему ![]() Добавлено через 1 минуту Добавлено через 1 минуту ![]() Добавлено через 13 минут
0
|
|||||
| 19.03.2016, 14:50 | |
|
Как динамически выделять память на один элемент массива? Один обработчик события для нескольких динамически созданных объектов Интерпретируемые языки VS Компилируемые языки В коде динамически наполняется массив и его элементы выводятся на сцену, но выводится только один элемент никакой тип Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|