НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: varenikAA  
Дата: 16.05.20 02:41
Оценка:

«Не умножай сущности сверх необходимого»


Немного волнуюсь. Когда я стал программировать на C# и немножко java, то думал, что вот она вершина программирования.
В отдел выписывали RSDN пока выделяли деньги, потом денег не стало, а журнал перестал печататься.
Помню как пролистывал статьи по Nemerle, а полгода назад вернулся к ним и удивился, что не замечал этого чуда 10 лет назад,
а ведь спокойно можно было писать и под винду и веб на немерле того времени.
Но произошло это осознание только после начала увлечения ФП. Во многом благодаря F#.
Учите F#, но будьте внимательны. Язык этот противоречив, его синтаксис прекрасен, а вот эко-система подкачала.
Так вот, написал тут для повседневных дел небольшую программу на немерле, которая грабит с веб-страницы данные и выводит таблицу за день
и строит диаграмму за месяц.
Все бы ничего, но немерл в какой-то момент был удален из студии, а строчек стало много и итоговая не помещалась на экран.
А в качестве источника данных для гридвью использовался немерловский list[T].
Естественно, никакой сортировки. Чтобы поправить требовалась установка немерла на студию. Заниматься этим не хотелось.
И я решил продолжить изучение F#. Казалось, что с провайдерами типов(киллер-фича фшарпа) я быстро сграблю нужные данные.
И тут ТАДАМ! HtmlProvider вместо предоставления списка таблиц, выдает именованные св-ва используя при этом тэги H1-H5 над таблицой,
это была первая засада, т.к. заголовок меняется регулярно(в зависимости от параметров запроса). Заменами тегов HX на span проблема решилась.
Но осадок остался. Дальше начался треш, оказалось что текст в ячейках закодирован в html, но провайдер русские коды не знает и преобразовывает в текст неправильно. Настроек этого дела я не нашел. Спустя час, скрепя сердце, я открыл исходники немерла и стал тупо копипастить — регексом вырезал TBODY
и распрасил XmlProvider-ом как и ожидалось этот провайдер кодировку (#303;#343 осилил. А дальше был использован Xplot google chart для построения графиков,
но здесь меня ждало еще большее разочарование, ведь это была банальная обертка над html+javascript — во временный каталог кидается файл в который напиханы данные по которым гугловый скрипт строит графики. Функция Chart.show делает самое сложное — открывает html в браузере! УХ!
Но и это ничего, а главное, для трушности были описаны типы в которые складывались данные. Строгая надо сказать типизация!
Но гуглу она не нужна! Для графиков нужны словари в итого вся красота сторогой типизации превратилась в мап t.Key, t.Value |> :value |> Chart.....
Да, подумал я, в итоге уже сонный, в потьмах качнул немерл 4.5 зиповый и настроил компиляцию и командной строки.
Так думаю, добавлю радиокнопок для задания сотрировки. открыл в n++ и смотрю на код формы. ААА! Плюнул, перегнал в DataTable,
задал в конструкторе сортировку по умолчанию для грида и готово.

После этого я сделал грустный вывод в строго-типизированных языках огромная часть работы заключается длинных цепочках конвертации данных из одной формы в другую.

Другой подход используется в динамически-типизируемых языках javascript, clojure, common lisp

Данные определяются по месту, и здесь важнейшее значение имеют не типы, а имена.
Пример:
var p1 = new Person(1,2,3,"Alice");
var p2 = new Person(Name: "Bob", Age: 10, Hands : 2, Foots : 1);
var p3 = new Person { Name = "Cooper", Age= 11, Hands : 3, Foots = 5}:


Аналогично в кложе:
(def p {:name "Alice" :age 10})


В лиспе конечно смотрится похуже, но зато лисп не привязана к JVM в отличии от кложи.

(defparameter *my-hash* #H(:name "Eitaro Fukamachi"))
(getf *my-hash* :name)


Ну и развивая на днях веб-интерфейс пришлось покодить на js+html, это был как глоток свежего воздуха.
Динамика рулит.
ПС Как думаете все таки CL или Clojure?
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: Michael7 Россия  
Дата: 16.05.20 03:05
Оценка: +1
Здравствуйте, varenikAA, Вы писали:

AA>После этого я сделал грустный вывод в строго-типизированных языках огромная часть работы заключается длинных цепочках конвертации данных из одной формы в другую.


В ассемблере не надо конвертировать
А строго он или не очень типизированный в некотором роде зависит от точки зрения.
Re[2]: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: varenikAA  
Дата: 16.05.20 04:28
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, varenikAA, Вы писали:


AA>>После этого я сделал грустный вывод в строго-типизированных языках огромная часть работы заключается длинных цепочках конвертации данных из одной формы в другую.


M>В ассемблере не надо конвертировать

M>А строго он или не очень типизированный в некотором роде зависит от точки зрения.

У него фатальный недостаток, на лиспе я могу GTK-3 форму с парой кнопок за 5 минут наклепать(соизмеримо с WinForms + кроссплатформа),
а на асме сомневаюсь что в 5 минут кто-то уложится.



еще 10 минут ушло на установку SBCL,SLIME, QUICKLISP
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: Слава  
Дата: 16.05.20 08:33
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Динамика рулит.

AA>ПС Как думаете все таки CL или Clojure?

То о чём вы пишете, называется не динамика, а структурная типизация. Возьмите TypeScript, он это умеет.
Re[3]: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.05.20 09:28
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>У него фатальный недостаток, на лиспе я могу GTK-3 форму с парой кнопок за 5 минут наклепать(соизмеримо с WinForms + кроссплатформа),

AA>а на асме сомневаюсь что в 5 минут кто-то уложится.

А на тайпскрипте за это же время можно сделать и форму, и бакенд для неё, за 10 — задеплоить докерный образ в амазон.
Re[3]: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: Michael7 Россия  
Дата: 16.05.20 10:29
Оценка:
Здравствуйте, varenikAA, Вы писали:


AA>У него фатальный недостаток, на лиспе я могу GTK-3 форму с парой кнопок за 5 минут наклепать(соизмеримо с WinForms + кроссплатформа),

AA>а на асме сомневаюсь что в 5 минут кто-то уложится.

На GTK-3 я не программирую, да и ассемблер подзабыл, а его линуксовую специфику и не знал, так что точно за пять минут такую форму не напишу. Но вообще-то, из того, что знаю "в общем" не факт, что на нем сильно длиннее будет. Да там практически на любом языке не должно быть длинно, так как просто дергается несколько очень высокоуровневых функций из либ. Примеры разных хелловордов на Си для Gtk не сказать бы что длинные.
Re: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: msorc Грузия  
Дата: 16.05.20 10:56
Оценка:
Здравствуйте, varenikAA, Вы писали:

Ну традиционно, где нужно вытянуть откуда-то (распарсить) неводомую херню и обернуть ее в нативный объект (класс с методами именами полей, например) языки с динамической типизацией показывают дули языкам со статической типизацией.
Re[4]: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: varenikAA  
Дата: 16.05.20 13:54
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, varenikAA, Вы писали:


AA>>У него фатальный недостаток, на лиспе я могу GTK-3 форму с парой кнопок за 5 минут наклепать(соизмеримо с WinForms + кроссплатформа),

AA>>а на асме сомневаюсь что в 5 минут кто-то уложится.

I>А на тайпскрипте за это же время можно сделать и форму, и бакенд для неё, за 10 — задеплоить докерный образ в амазон.

Сегодня как раз прочел новость про тайпскрипт:
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: НЕ ПОРЕЖЬТЕСЬ БРИТВОЙ ОККАМА
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 17.05.20 15:56
Оценка: +2 :)
Здравствуйте, varenikAA, Вы писали:

AA>>>После этого я сделал грустный вывод в строго-типизированных языках огромная часть работы заключается длинных цепочках конвертации данных из одной формы в другую.


M>>В ассемблере не надо конвертировать

M>>А строго он или не очень типизированный в некотором роде зависит от точки зрения.

AA>У него фатальный недостаток, на лиспе я могу GTK-3 форму с парой кнопок за 5 минут наклепать(соизмеримо с WinForms + кроссплатформа),

AA>а на асме сомневаюсь что в 5 минут кто-то уложится.

AA>Image: Annotation 2020-05-16 112636.png



На асме короче получается:
.386 
.model flat, stdcall 
ExitProcess PROTO      ,:DWORD 
MessageBoxA PROTO      ,:DWORD, :DWORD, :DWORD, :DWORD 
.data 
   MsgBoxCaption  db "Пример окна сообщения",0 
   MsgBoxText     db "Программировать на Ассемблере под Win32 очень просто!",0 
.const 
   NULL        equ  0 
   MB_OK    equ  0 
.code 
   Main: 
    INVOKE    MessageBoxA, NULL, ADDR MsgBoxText, ADDR MsgBoxCaption, MB_OK 
    INVOKE    ExitProcess, NULL 
   end Main
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.