|
Модератор
|
|
Динамически типизированные языки : один вред, никакой пользы31.01.2016, 01:13. Показов 9439. Ответов 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 Компилируемые языки В коде динамически наполняется массив и его элементы выводятся на сцену, но выводится только один элемент никакой тип Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
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). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|