vit_r: default (vit_r)
[personal profile] vit_r
Мне влом писать много, так что объяснения в следующий раз. Может быть. Сейчас просто двумя абзацами. (Не думаю, что кто-то поймёт, но это не важно.)

Строгая типизация - она для записи решённой задачи, не строгая (которую называют динамической, но лучше бы называть её контекстной) - она для поиска решения.

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

То есть, где-то между крайними точками экономия ресурсов становится ниже потерь.

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

Date: 2013-06-29 12:10 am (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
А когда у нас вывод типов?

Date: 2013-06-29 08:16 am (UTC)
From: [identity profile] vit-r.livejournal.com
А зачем? В половине случаев внутри получается текст, который разбирают в зависимости от условий.

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

Date: 2013-06-29 12:11 am (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Кстати, изложено исключительно прозрачно в отличие от предыдущих виршей.

Date: 2013-06-29 08:17 am (UTC)
From: [identity profile] vit-r.livejournal.com
Потому что это только заметка на память. Не сказано ни о причинах, ни о следствиях.

Date: 2013-06-29 04:58 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Строгая типизация помимо повышения эффективности довольно сильно экономит время и позволяет реализовывать всякие полезные повышающие продуктивность тулы типа идеи или эклипса. Ну и полезна чисто как комментарии.

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

Что любопытно - совершенно не популярны "смешанные" языки типа cecil - где типизация есть, но опциональна (стирание всей информации о типах семантику программы не меняет)
Edited Date: 2013-06-29 05:01 am (UTC)

Date: 2013-06-29 05:26 am (UTC)
From: (Anonymous)
> Так что imho засилье динамической типизации в скриптинге связано в основном с "простотой в реализации"

Ещё полиморфизм. Скажем, я не понимаю, как можно реализовать тот же grep, когда результат работы программы - поток объектов - a' list.

Собственно, попробуйте сделать sed который будет заменять поле 25:int на поле 88:int в произвольном выводе любой команды. Но со статической типизацией.

Т.е. к вам на вход этого статически типизированного sed'а может придти

float * int * float list или string * float list или просто int list.

Соответственно, если вы сидите на статической типизации, вам придётся задавать структуру данных, передаваемых на вход grep или sed.

Date: 2013-06-29 06:54 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Ну как - он должен просто быть не 'a list, а обладать какими-нибудь свойствами - вариантов куча - в ML модули или объекты, в Haskell предикаты. Опять же: если вы не знаете, какие свойства от элемента потока вам нужны - значит в дизайне что-то не так.

Конкретно для грепа нужно иметь сравнение на равенство как минимум.

Eq => ...

Тот же Haskell это сам скорее всего выведет.
Edited Date: 2013-06-29 06:56 am (UTC)

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 08:36 am (UTC) - Expand

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2013-06-29 11:07 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 11:27 am (UTC) - Expand

(no subject)

From: [identity profile] kouzdra.livejournal.com - Date: 2013-06-29 11:38 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 11:53 am (UTC) - Expand

+1 по поводу не знаем

From: [identity profile] serge shikov - Date: 2013-06-30 03:43 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2013-06-29 03:05 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 07:29 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2013-06-29 11:01 pm (UTC) - Expand

Date: 2013-06-29 08:34 am (UTC)
From: [identity profile] vit-r.livejournal.com
Строгая типизация для заданных (сверху) интерфейсов.

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

Date: 2013-06-29 12:49 pm (UTC)
From: [identity profile] metaclass.livejournal.com
grep a' list?
см. LINQ

Статически типизированный sed - структурные типы. "Запись у которой есть поле c именем X и типом int".

Date: 2013-06-29 05:47 am (UTC)
From: [identity profile] nestoklon.livejournal.com
Есть довольно популярный "язык" cython. Типизация есть, но она опциональна: хочешь чтобы работало быстрее -- объявляй типы.

Date: 2013-06-29 08:37 am (UTC)
From: [identity profile] vit-r.livejournal.com
довольно популярный это как-то не особо хорошо для использования в реальных коммерческих проектах.

(no subject)

From: [identity profile] nestoklon.livejournal.com - Date: 2013-06-29 10:55 am (UTC) - Expand

Date: 2013-06-29 05:48 am (UTC)
From: [identity profile] alexott.livejournal.com
ну распараллеливание больше имеет отношение к чистоте функций - та же кложура хорошо параллелится

Date: 2013-06-29 06:52 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Скорее как в Erlange - в защите локальных от сайд-эффектов (сами-то сайд-эффекты в Erlang есть в полный рост). Но это все только для мультипроцессорности, а если всякие GPU-SSE надо использовать - там без типизации как раз никак.

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

Date: 2013-06-29 08:31 am (UTC)
From: [identity profile] vit-r.livejournal.com
Строгая типизация помимо повышения эффективности довольно сильно экономит время

Это определяется только по ощущениям и теоретическим измышлениям. На полный цикл в реале эти параметры никто не измерял.

Date: 2013-06-29 11:09 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Есть объективный, хотя не абсолютный, критерий - длина кода. С типизацией сейчас код получается короче. Хотя конечно дело не только в типизации - тот же паттерн-матчинг в Перл вставить раз плюнуьть, а польза будет.

Но Ларри упирался и отбивался даже от замыканий.

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 11:25 am (UTC) - Expand

Date: 2013-06-29 05:49 am (UTC)
From: [identity profile] alexott.livejournal.com
я поэтому для прототипирования неопределенно сформулированных задач использую кложуру...

Date: 2013-06-29 07:20 am (UTC)
From: [identity profile] sorhed.livejournal.com
Я тоже раньше так считал, но потом понял, что в нормальных языках с выводом типов возможно top-down программирование. Что даёт неограниченные возможности для поисков и экспериментов; в то время как в языках с динамической типизацией в процессе экспериментирования легко запутываешься, где что лежало.

Date: 2013-06-29 08:41 am (UTC)
From: [identity profile] vit-r.livejournal.com
в языках с динамической типизацией в процессе экспериментирования легко запутываешься, где что лежало

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

top-down - это замечательно, но возможно только в чистом поле. В реале слишком много мелочей задано окружением и часть из них не известна. У меня сейчас всё больше задач второго типа и всё меньше первого.

Date: 2013-06-29 09:13 am (UTC)
From: [identity profile] sorhed.livejournal.com
У меня почти никогда нет задач первого типа.

Top-down активно используется мной в реальной практике уже года четыре, наверное. Я уже и забыл, как писать по-другому.

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 09:15 am (UTC) - Expand

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-06-29 09:16 am (UTC) - Expand

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-06-29 09:15 am (UTC) - Expand

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-06-29 09:20 am (UTC) - Expand

(no subject)

From: [identity profile] orleanz.livejournal.com - Date: 2013-06-29 09:35 am (UTC) - Expand

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-06-29 09:36 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 09:42 am (UTC) - Expand

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-06-29 12:01 pm (UTC) - Expand

(no subject)

From: [identity profile] orleanz.livejournal.com - Date: 2013-06-29 05:07 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 08:11 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 07:38 pm (UTC) - Expand

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-06-29 08:04 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 08:20 pm (UTC) - Expand

Date: 2013-06-29 08:05 am (UTC)
From: [identity profile] guamoka.livejournal.com
Ad-hoc решение begets новые ad-hoc решения, а не структурирование и строгое типизирование. Поэтому логическим продолжением получается "нужно больше индусов". Увы.

Date: 2013-06-29 08:42 am (UTC)
From: [identity profile] vit-r.livejournal.com
Это только если мы просто ищем, а не чётко документируем, что нашли.

(no subject)

From: [identity profile] guamoka.livejournal.com - Date: 2013-06-29 08:49 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 08:54 am (UTC) - Expand

(no subject)

From: [identity profile] guamoka.livejournal.com - Date: 2013-06-29 09:04 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 09:12 am (UTC) - Expand

Date: 2013-06-29 11:59 am (UTC)
From: [identity profile] asox.livejournal.com
Строгая типизация - она для записи решённой задачи, не строгая (которую называют динамической, но лучше бы называть её контекстной) - она для поиска решения.

А разве миожно писать программу - не найдя заранее решения?

Date: 2013-06-29 01:03 pm (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
а разве можно продать покупателю программный комплекс, которого не существует ?

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-06-29 05:18 pm (UTC) - Expand

(no subject)

From: [identity profile] yajohn.livejournal.com - Date: 2013-06-29 06:45 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-06-29 09:34 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 08:12 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-06-29 09:35 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 09:50 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-04 04:31 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-07-04 04:37 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-04 05:12 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-07-04 05:16 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-04 05:32 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-07-04 06:17 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-07-04 08:18 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-05 07:28 am (UTC) - Expand

Date: 2013-06-29 07:39 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Те программы, решение которых известны заранее, можно поручить писать индусам. Но гораздо больше тех случаев, когда надо думать.

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-06-29 09:31 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-06-29 09:52 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-06-29 10:10 pm (UTC) - Expand

Date: 2013-07-02 03:09 am (UTC)
From: [identity profile] perepertoz.livejournal.com
правильное решение есть разве что на олимпиаде по программированию ;)
а в реальной жизни, если решение известно заранее - то это или автоматизация (и то - не факт) или рефакторинг/переписывание.
всё остальное - всегда с шансом "ну не шмогла я, не шмогла"(с)лошадь.
конечно, народ придумывает схемы типа "а давайте сляпаем прототип из чего-то побыстрее, а потом перепишем, если взлетит", дабы минимизировать урон и т.д. Но это не меняет сути

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-04 04:19 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-07-04 04:34 pm (UTC) - Expand

(no subject)

From: [identity profile] perepertoz.livejournal.com - Date: 2013-07-04 06:09 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-05 06:58 am (UTC) - Expand

(no subject)

From: [identity profile] perepertoz.livejournal.com - Date: 2013-07-07 08:55 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-07-10 09:40 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2013-07-10 08:01 pm (UTC) - Expand

Profile

vit_r: default (Default)
vit_r

February 2026

S M T W T F S
12 34 567
8 9 1011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 12th, 2026 06:25 pm
Powered by Dreamwidth Studios