|
Модератор
|
|
Динамически типизированные языки : один вред, никакой пользы31.01.2016, 01:13. Показов 9418. Ответов 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 - капля пользы?
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 08.02.2016, 19:01 | |||
0
|
|||
|
Модератор
|
|||
| 08.02.2016, 19:14 [ТС] | |||
|
Тип может быть известен в ct, для него сгенерёна метаинформация которая будет использоваться в rt для сериализации.
0
|
|||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
||
| 08.02.2016, 20:48 | ||
|
0
|
||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 09.02.2016, 17:57 | |||
если б статические реляционки могли работать со сложными объектами, документные никогда б не появились.
0
|
|||
|
Модератор
|
|||
| 09.02.2016, 18:39 [ТС] | |||
|
0
|
|||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 10.02.2016, 16:16 | |||
0
|
|||
|
Модератор
|
||||
| 11.02.2016, 17:03 [ТС] | ||||
|
0
|
||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 12.02.2016, 18:48 | |||
|
что чуть сложнее пересылки байтиков - скрипты на динамике.
0
|
|||
|
Модератор
|
|||
| 12.02.2016, 21:01 [ТС] | |||
|
Не по теме: (люди совершают множество странных действий, например, покупают акции ммм или трепятся в холиварах) Что, нельзя было бы использовать статический скрипт, например, Ваш любимый F# (.fsx)? Ну, пусть он компилируется перед запуском, ну какой то другой скрипт. Не по теме: (Хотя, опять же, почему обязательно скрипт? Аргументы, вроде, "сразу видны изменения" несерьёзны. Компиляция нынче шустра.)
0
|
|||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
||
| 13.02.2016, 00:23 | ||
|
Не по теме: Речь шла про документо-ориентированных БД. Ну это так, к слову. А ещё есть хранилища графов, например, да...
0
|
||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 17.02.2016, 09:01 | |||
0
|
|||
|
Модератор
|
||||
| 17.02.2016, 20:03 [ТС] | ||||
|
Не по теме: В огороде бузина а в Воронеже дядька.
0
|
||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||
| 18.02.2016, 07:58 | ||||
Не по теме:
0
|
||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|||
| 18.02.2016, 09:51 | |||
|
В общем, из всего этого я делаю вывод, что, похоже и в разработке, любители динамической типизации тоже не особо думают о своих задачах и как они их сами будут решать, а действуют строго шаг за шагом. Мол, сначала заведем какой-нибудь dictionary, а потом уже подумаем что дальше со всем этим делать. Поэтому очевидно, что со статической типизацией у них не лады
0
|
|||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||||||
| 18.02.2016, 10:55 | |||||||
какие фт к словарю могут быть? что б можно было излекать данные по ключу и делать (не-)простейшие агрегации/статистики на основании этих данных
будем объем подключенных дисков хранить в строках, а потом складывать ? или тупо преобразовывать их строки в инты на каждый чих ? или есть еще гениальные идеи? какая ж это статика в строках хранить?
Не по теме:
0
|
|||||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||||||
| 18.02.2016, 11:15 | ||||||
![]() . Все что я из твоей постановки задачи могу написать, так это:struct Cpu { /* .... */ }; struct Ram{ /* ... */ }; struct Hdd { /* ... */ }; using HardwareUnit = boost::variant<Cpu, Ram, Hdd>; std::map<std::string, HardwareUnit>; Добавлено через 2 минуты Добавлено через 4 минуты
0
|
||||||
|
Модератор
|
|||||||
| 18.02.2016, 12:18 [ТС] | |||||||
|
Voivoid, +1.
И, если уж, требуется описание разнородных данных, то, всё равно, не всяких. Тут, разумеется алгебраический тип нужен, или, выражаясь по F#-ному, DU.
0
|
|||||||
|
4 / 5 / 8
Регистрация: 19.05.2014
Сообщений: 84
|
|
| 19.02.2016, 01:49 | |
|
Согласен, строгая статическая типизация рулит, решая множество ошибок из-за неверного формата данных и позволяя писать более структурированный код. Да и работает обычно быстрее. В пользу динамики только меньшая многословность, но это только если в статическом языке нет вывода типов.
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||||||
| 19.02.2016, 09:43 | ||||||||
ну твоя печаль, лишний раз подтвержает отсуствие кругозора. сходи в гугл на досуге - узнаешь много нового.
0
|
||||||||
| 19.02.2016, 09:43 | |
|
Как динамически выделять память на один элемент массива? Один обработчик события для нескольких динамически созданных объектов Интерпретируемые языки 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.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|