metaclass: (Default)
[personal profile] metaclass
https://medium.com/@yelbota/%D0%BA%D1%80%D1%83%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82-%D1%83%D0%BD%D1%8B%D0%BB%D1%8B%D1%85-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%BE%D0%B2-612c72738d04

Пройдет время, некоторым не повезет, и они встретят кризис среднего возраста в одиночестве, платя алименты ушедшей жене. Когда-то давно она прочитала в Космо, что программисты — это новые рок-звезды, но ушла, когда узнала что ее муж, унылый похапешник, не комитит на гитхаб. Другим повезет: они смогут проскочить в тимлиды, и руководство заткнет ими купленный слот на отраслевой конференции. Там они самоутвердятся, рассказав молодым, что унылыми быть круто. И спираль уныния выйдет на новый виток, засосав еще больше классных ребят.

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

Date: 2015-08-13 05:34 pm (UTC)
From: [identity profile] jdudzik.livejournal.com
Да-да-да, у заказчика бесконечные деньги, он готов оплачивать разработку велосипедов, библиотек для элементарных вещей и прочее прочее прочее

Языки без IDE не нужны. Нет IDE и библиотек - нет языка.

Date: 2015-08-13 06:47 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Я ничего не знаю про ваших заказчиков, но для говносайтов в хаскеле все есть, для говносервисов с РЕСТ АПИ тоже все есть.

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

Date: 2015-08-13 06:58 pm (UTC)
From: [identity profile] jdudzik.livejournal.com
ИДЕ нужна для двух вещей:

- удобство
- скорость
Edited Date: 2015-08-13 06:59 pm (UTC)

Date: 2015-08-13 07:08 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Вот если язык настолько неудобный, что для него нужна ИДЕ - то нафиг нужен такой язык?

Date: 2015-08-13 07:16 pm (UTC)
From: [identity profile] jdudzik.livejournal.com
Я пробовал и Скалу. и Хаскел. И могу авторитетно сказать - не нужны нафиг.

Скала была бы нужна, если бы был IDE. Но ни один из двух существующих не умеет запустить Hello world. Командная строка не умеет запустить программу из > 1 файла.

Хаскелл не умеет в наследование. Simula 67 умела, а Haskell 2015 уже не умеет. Прогресссссссс

Date: 2015-08-13 08:03 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Наследование в хаскеле вроде бы невозможно, типовыводилка не разрешает. Если сделать наследование - получится многословно и с обязательными аннотациями, как в скале.

Date: 2015-08-13 08:40 pm (UTC)
From: [identity profile] jdudzik.livejournal.com
Вот я и об этом Я - программист и я хочу, чтобы Хаскелл сделал мне типы с подтипами. А Хаскелл отвечает - "я экспериментальный язык, делай как Я СКАЗАЛ".

Очевидно, что это ненормально.

Date: 2015-08-14 09:14 am (UTC)
From: [identity profile] thesz.livejournal.com
Вам не наследование надо, а одна из сторон решения expression problem (рекомендую посмотреть, это квинтэссенция проблемы расширяемость).

На разных языках это решается по разному.

Нормальную систему типов для ОО разрабатывали >25 лет (Cardelli, An Accidental Simula User). При этом никто не знает, нет ли в ней дыр (well typed program go wrong). Для сравнения, для зависимых типов (Martin-Loef type theory) понадобилось 12 лет (с появления в 1971 до третьей статьи в 1983), чтобы закрыть все дыры.

Поэтому ОО это очень, очень сложно и очень, очень ненадёжно.

Date: 2015-08-14 09:39 am (UTC)
From: [identity profile] jdudzik.livejournal.com
ООП ненадёжно, а ФП - безнадёжно.

Как-то так

Date: 2015-08-16 07:51 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Можно эмулировать (точнее, реализовывать руками) через словари и тайпклассы. Но это такой геморрой, что ну его нафиг. Второй GObject писать.

Date: 2015-08-14 05:44 am (UTC)
From: [identity profile] pupsikk.livejournal.com
Люди поклоняющиеся наследованию и ООП вообще - убоги так же, как и посетители концертов Петросяна.
Поэтому и Скала тоже немного отвратительна, ибо желание Одерского одной ногой топать по функциональщине, а другой наступать в Жаву - вызывает непонимание и желание обьяснить это то ли глупостью, то ли коммерческими соображениями, то ли ... глупостью.

Date: 2015-08-14 06:47 am (UTC)
From: [identity profile] jdudzik.livejournal.com
> Люди поклоняющиеся наследованию и ООП вообще

Ко-ко-ко.

Люди, которые используют наследования и ООП, знают, что их программы работают, пишутся и поддерживаются в разы проще, а оплачиваются - в разы лучше. Всё, что было выдающегося в функциональных языках, давно стало нормой даже в C++,

Весь секрет привлекательности ФП - написание на нём занимает так много времени и требует таких ненужных навыков, что получившийся Hello World тысячу раз переписан, пока запустится. Что-то мало-мальски сложное на ФП либо превращается в ООП другим синтаксисом, либо работает с черепашьей скоростью.

Date: 2015-08-14 07:11 am (UTC)
From: [identity profile] pupsikk.livejournal.com
Если вы такое пишете, вы явно ничего более серьезного чем хелловорлд на ООПогани не писали.
На больших проектах вся эта срань мгновенно превращается в тыкву, большую и неподьемную, аж компиляторы плачут. В особенности благодаря не в меру ретивым выпускникам универов, которых дефлорировали джавой, с тех пор у них возникает фиксация на этой дряни.
ООП - тупая, окостеневшая, ограниченная идеология, раздутая и разрекламированная сверх всякой меры, с кучей парадоксов, которые разрешить можно только остервенелым костылением. Я бы не имел к ней претензий если б она оставалась примерно в том формате, в котором она живет в Обьектив-Си - сообщения, инкапсуляция и позднее связывание, но в остальном мире она просто вылезла за все мыслимые границы, особенно с с массовым нашествием программистов от сохи. Как говорил один поэт, идея брошенная в массы, она как девка брошенная в полк. Вот именно.

Date: 2015-08-14 07:19 am (UTC)
From: [identity profile] jdudzik.livejournal.com
Разумеется, я писал на ООП достаточно большие проекты. Ни в какую тыкву они не превратились. Хотя бы потому, что для ООП есть IDE и хорошие паттерны проектирования.

И разумеется, я видел исходники библиотек на функциональных языках. Там каждый изобретает свой язык, а кучу элементарных вещей "надо писать самому". Итог - непредсказуемое поведение, лютые тормоза, куча времени, убитого на преодоление особенностей языка. Erlang за 20 лет так и не определился, какой библиотекой ходить по HTTP, а нормально работающего драйвера для mySQL не было и нет.

В программах, где где приходится взаимодействовать с пользователем - приходится эмулировать ООП, ведь без него окошки нормально не нарисуешь.

Все примеры "удачных решений на ФП" - написаные роботами программы для роботов.
Edited Date: 2015-08-14 07:20 am (UTC)

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2015-08-14 02:34 pm (UTC) - Expand

Date: 2015-08-14 06:17 am (UTC)
From: [identity profile] permea-kra.livejournal.com
>Хаскелл не умеет в наследование.

Зачем бы ему это уметь?

>Скала была бы нужна, если бы был IDE.

Вы до сих пор не объяснили, зачем нужна ИДЕ.

Date: 2015-08-14 06:39 am (UTC)
From: [identity profile] pupsikk.livejournal.com
Чтоб было удобнее редактировать текст, ориентироваться среди файлов, управлять зависимостями, компилировать, собирать и дебажить.
АйДиИ уровня Вижуал Студио или Х-Код - это все таки айс.

Date: 2015-08-14 06:48 am (UTC)
From: [identity profile] permea-kra.livejournal.com
>удобнее редактировать текст
На счет появилась хоть одна ИДЕ с встроенным редактором уровня хотя бы vim ? По-моему, нет.

> ориентироваться среди файлов
Это каким же безголовым надо быть, чтобы потеряться в правильно разложенных по директориям нескольким сотням файлов?

>компилировать, собирать
Это один черт должен делать аналог make.

>дебажить
Господи, зачем? Чем отладочноая печать-то с реплом не устраивают?
Я могу еще понять пользу от перехвата ввода-вывода (в т.ч. сетевого) и дампа состояния, но это явно делается не так.

Date: 2015-08-14 06:56 am (UTC)
From: [identity profile] jdudzik.livejournal.com
> На счет появилась хоть одна ИДЕ с встроенным редактором уровня хотя бы vim ? По-моему, нет.

vim - характерный пример инопланетной технологии. Он в принципе контринтуитивен, Создать файл, написать текст, сохранить в нём - невозможно без чтения справки. В общении с vim машина - главный, а человек - слуга.

Правильный подход - emacs, notepad и где угодно ещё. Где есть текст и есть отдельно работа с текстом и можно работать, не зная ни одной горячей клавиши.

> Это каким же безголовым надо быть, чтобы потеряться в правильно разложенных по директориям нескольким сотням файлов?

Желаю успеха в переименовании одного класса в проекте из > 500 файлов.

> Это один черт должен делать аналог make.

Желаю успеха в выучивании 100500 команд ant, maven, sbt и всего прочего зоопарка.

> Господи, зачем? Чем отладочноая печать-то с реплом не устраивают?

Для компилируемых (хотя бы в байткод) языков - практически всем.

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-08-14 07:21 am (UTC) - Expand

(no subject)

From: [identity profile] jdudzik.livejournal.com - Date: 2015-08-14 07:25 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-08-14 07:30 am (UTC) - Expand

(no subject)

From: [identity profile] jdudzik.livejournal.com - Date: 2015-08-14 07:35 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-08-14 07:38 am (UTC) - Expand

Date: 2015-08-14 07:25 am (UTC)
From: [identity profile] pupsikk.livejournal.com
>На счет появилась хоть одна ИДЕ с встроенным редактором уровня хотя бы vim ? По-моему, нет.
Чо, серьезно? ха-ха-ха. У вас прелестное чувство юмора.

>Это каким же безголовым надо быть, чтобы потеряться в правильно разложенных по директориям нескольким сотням файлов?
Ну вот я такой безголовый. Особливо когда файлов есть несколько тыщ, тогда я вообще теряюсь. А еще бывает их надо в разных позах и комбинациях компилировать. Вам-то легко, наверно, раз-два, в десятке мейков строк 200 подправил и снова свеж, как огурец. Но не все ж такие супермены.

>Это один черт должен делать аналог make.
У меня есть для вас сурприз - нормальные ИДЕ это таки надстройки над мейками.

>Господи, зачем? Чем отладочноая печать-то с реплом не устраивают?
Ну хочется иногда сложные структуры данных проинспектировать на предмет содержимого - без вбивания миллионов строк распечаток, которые между прочим тоже того .. ресурсы жрут и синхронизации сбивают. Вот у меня был случай - одна системка на очень слабом камешке была настолько хилой, что распечатки занимали около 50% ее времени. Пришлось их почикать и дебажить очень осторожно, иногда с дебаггером, иногда методом ловли льва в пустыне.

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-08-14 07:35 am (UTC) - Expand

(no subject)

From: [identity profile] pupsikk.livejournal.com - Date: 2015-08-14 08:06 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-08-14 08:19 am (UTC) - Expand

(no subject)

From: [identity profile] pupsikk.livejournal.com - Date: 2015-08-14 08:47 am (UTC) - Expand

Date: 2015-08-14 02:37 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
>в правильно разложенных по директориям
А они неправильно разложены. Вот как передали вам проект - он такой и есть.

>vim
wq!
бибикать и все портить

>Господи, зачем

А вы никогда сложный gui не писали, наверное.

Date: 2015-08-14 03:12 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
отладочная печать не всегда спасает, иногда приходится во всякие процмоны дуплиться

Date: 2015-08-14 06:43 am (UTC)
From: [identity profile] jdudzik.livejournal.com
А зачем языку вообще что-то уметь, правда? Давайте все на Brainfuck писать - он тьюринг-полный и кросс-платформенный

Date: 2015-08-14 06:54 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Ладно, давайте серьезно.

Единственный осмысленный случай применения наследования - перекрытие реализации по умолчанию - в хаскеле есть. Больше там говна этого нет, поскольку это не ООП-язык (и слава богу), и тащить туда ООП могут только больные ООП головного мозга.

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

Date: 2015-08-14 07:00 am (UTC)
From: [identity profile] jdudzik.livejournal.com
> Единственный осмысленный случай применения наследования - перекрытие реализации по умолчанию

Неверно. Наследование нужно, чтобы тысячу раз не писать один и тот же код.

Реализовывать можно по разному. Можно жёсткое, как в C++/Java. Можно duck typing, как в Go. Можно как в Python. Можно через прототип как в JavaScript. Но везде одно и то же преимущество: можно унаследовать, использовать родительский код и не задумываясь создать в любом месте программы.

В Haskell этого нет и не будет. В каждом случае надо отдельно ломать голову - как бы это написать, чтобы уважаемый язык соизволил понять, какой тип в данном случае нужен.

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2015-08-14 07:17 am (UTC) - Expand

(no subject)

From: [identity profile] jdudzik.livejournal.com - Date: 2015-08-14 07:23 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-08-14 07:55 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-08-14 07:56 am (UTC) - Expand

(no subject)

From: [identity profile] jdudzik.livejournal.com - Date: 2015-08-14 09:38 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2015-08-14 09:02 am (UTC) - Expand

(no subject)

From: [identity profile] jdudzik.livejournal.com - Date: 2015-08-14 09:37 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2015-08-14 10:46 am (UTC) - Expand

(no subject)

From: [identity profile] jdudzik.livejournal.com - Date: 2015-08-14 11:16 am (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2015-08-17 04:48 pm (UTC) - Expand

Date: 2015-08-20 10:38 am (UTC)
From: [identity profile] rashid80.livejournal.com
IDE нужна хотя бы для того что бы:
1. удобно делать рефакторинг и кодогенерацию типовых блоков - экономит время.
2. автокомплит и проверка банального синтаксиса.
3. не держать в голове все функции и виды/типы аргументов для функций, в том числе внешних (из модулей)
4. Запускать/собирать проект кнопкой, а не сваливаться в консоль.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 10th, 2025 06:25 pm
Powered by Dreamwidth Studios