(Untitled)

Sep 08, 2014 03:20

Сергей Александрович тут разводит панику, что я в своём ЖЖ занимаюсь бесполезными умопостроениями. Объясню, как это работает. Мне интересно понимать, как устроен мир. Никакой немедленной пользы я из этого не извлекаю, конечно, но опыт показывает, что в будущем это позволяет принимать более адекватные решения. Я живу в предположении, что идеальный ( Read more... )

популярные заблуждения, ходил в народ, скандалы интриги расследования

Leave a comment

thesz September 7 2014, 22:42:48 UTC
Как раз хотел написать про квантовую (статистическую) природу больших проектов на динамических языках. Да вообще на любых ( ... )

Reply

tonsky September 7 2014, 23:08:05 UTC
Я что-то запутался. Для Питона есть парсер C. Это значит, что динамические языки могут? Или не могут? Или что? Вот есть, например, Perl.

Про статистическую природу тоже неясно: вы все-таки продолжаете настаивать на своем утверждении, что проекты больше 5k строк кода на динамических языках являются статистически незначимой аномалией, или нет?

Ну и, я так понял, вы второй раз переводите совершенно левые дискуссии (причины популярности Scala, полезность критерия indeed.com) на спор «нужны ли типы?». Это специально или нечаянно получается?

Reply

thesz September 8 2014, 04:38:30 UTC
Динамические языки могут, статистически. Ещё раз повторю, на (почти) любой мой пример тяжелой программы вы сможете привести её реализацию на (каком-то) динамическом ЯП. Что вы и делаете ( ... )

Reply

tonsky September 8 2014, 09:51:24 UTC
Это не мы беседуем, это вы беседуете. Я о другом говорю, а у вас все скатывается в споры о статической типизации. Всегда. Еще раз спрошу: вы отдаете себе в этом отчет, да?

> если бы вы знали об основополагающем принципе PSP/TSP

Пожалуйста, не старайтесь угадать, чего я знаю, а чего не знаю. Постарайтесь без перехода на личности.

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

Надеюсь, вы не делаете выводом о том, что если какой-то язык не поддерживает какого-то закостенелого ужасающего стандарта, то этот язык ни на что не годится? Это было бы логической ошибкой.

Reply

thesz September 8 2014, 10:00:15 UTC
В таких спорах меня всегда интересует, как мне сократить труд. Я всегда сравниваю с наилучшим из известных мне инструментов по удешевлению труда программиста - статической типизацией. Надеюсь, я объяснил, почему происходит то, что происходит.

Насчёт перехода на личности.

Скажите честно, вы про этот принцип знали?

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

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

Reply

tonsky September 8 2014, 10:15:43 UTC
Спорах? Вообще-то тут никто ни с кем не спорил, пока вы не пришли.

Статическая типизация - наилучший инструмент удешевления труда? Расположите пожалуйста в порядке приоритета следующие инструменты: неизменяемые данные, автоматическое управление памятью, наличие готовых библиотек, размер сообщества, REPL и интерактивная разработка, статическая типизация.

> Скажите честно, вы про этот принцип знали?

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

> я прикидываю, во что бы мне обошлась его поддержка на этом языке

И какова методика прикидки?

Reply

thesz September 8 2014, 10:58:23 UTC
Спор ( ... )

Reply

tonsky September 8 2014, 12:15:49 UTC
> Статическая типизация ловит ВСЕ отлавливаемые ею ошибки, а не только тестируемые.

Это такая тавтология? X ловит все ошибки, которые X ловит?

> REPL (сокращает цикл больше всех), статическая типизация, неизменяемые данные и далее уже не столь важно.

А почему вы приходите ко мне в журнал поспорить именно о статической типизации, а не в журнал к какому-нибудь Java-программисту, или C#, и не доказываете ему важность REPL-а? Чем я удостоился такой чести?

Reply

thesz September 8 2014, 12:36:50 UTC
Не совсем тавтология.

Представьте себе инструмент, который ловит X. Этот инструмент может действовать выборочно (тестирование) и тотально (типизация).

Модуль с текстом
a = X
b = X

придётся тестировать два раза (или писать два теста) и один раз вычислять типы.

Мне прикольно сюда заходить. Я постоянно нахожу здесь теплый приём и вдумчивых собеседников. Один трепетный theiced, вожделенно алчущий моего внимания, чего стоит. Здесь очень уютная атмосфера.

И я стараюсь огородить вас от ненужного напряжения. Зачем вам знать, что я пользовался Clojure лет за семь-восемь до его появления? Я это у себя написал, в своём ЖЖ.

PS
Отчество у меня Александрович.

Reply

tonsky September 8 2014, 12:44:46 UTC
Не очень понятно. Типизация ловит ошибки типизации. Окей, предположим что все. Тестирование ловит ошибки, которые выявляются тестированием. Окей, не все. Какая радость от тотальности, если все равно и то и другое лишь часть всех возможных ошибок?

Reply

thesz September 8 2014, 12:54:00 UTC
Примените всё тот же принцип расстояния по времени.

Вы внесли ошибки, которую ловит типизация. Вам их показали сразу и все. Вы их все можете исправить. Разом. С наименьшим возможным расстоянием по времени.

Это как тесты, сгенерированные по шаблону для всех фрагментов кода.

То есть, тестирование, но автоматическое. Не надо писать тесты отдельно.

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

Reply

andybil September 8 2014, 19:25:52 UTC
Чем ближе к естественному языку, тем меньше ошибок.
Любой первокласник научается за пару месяцев таблице умножения на родном любом языке. Сделайте язык программирования, который позволит роботу научится, как первокласнику.
Лучше не отвечайте.

Reply

thesz September 8 2014, 20:19:23 UTC
Лучше не пишите?

Reply

andybil September 9 2014, 04:29:32 UTC
Нынешние языки программирования находятся на стадии семисегментных индикаторов, на которых невозможно отобразить буквы, возникает исключение. Вот когда будет попиксельная система, пусть и чёрнобелая, можно будет говорить об искуственном разуме на уровне лягушки. А пока даже уровень червяка недоступен.

Reply

thesz September 9 2014, 07:00:16 UTC
Вы затягиваете в спор с аналогиями, а не фактами.

Reply

Языки программирования andybil September 9 2014, 07:11:31 UTC
Если в языке есть исключения, это устаревшее Г.

Reply


Leave a comment

Up