kika: (Default)
[personal profile] kika
Читая обсуждение http://ivan-gandhi.livejournal.com/3329246.html и ответы на мой коммент, я вдруг понял почему так тяжело идет. У меня нет никаких проблем барабанить на Erlang'е например, а Purescript, Elm или их идейный отэц Haskell (ну или ML) идет с гораздо большим трудом.

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

Потом как-то программирование на ассемблере превратилось в программирование на С, но компиляторы для этих микропроцессоров были таковы, что регулярно генерировали последовательности типа

mov bx, ax
mov dx, ax
mov bx, dx
mov ax, bx

Потому что так у него оптимизатор работает, видите ли. Ну или еще почему. И надо было компилировать в ассемблерный листинг, читать его и руками чистить от этого мусора, потому что иначе в ПЗУ не лезло.

А в универе учили как на Фортране ряды Тейлора вычислять, что тоже не прибавляло.

В результате я всегда когда программирую или читаю программу, симулирую в голове стековую-регистровую машину и "исполняю" на ней программу. И какие-нибудь list comprehensions, лямбды или хвостовые рекурсии отлично на такой голове исполняются. А вот стрелки и монады - почему-то нет.

Нужна книжка или статья "Функциональное программирование для недохардверных недоинженеров". Реквестирую у мироздания.

Date: 2015-09-14 05:18 am (UTC)
From: [identity profile] soonts.livejournal.com
>стажер.. при попытке облажаться получит от компилятора линейкой по рукам
Side effects от функций это всего один класс проблем, с которыми можно облажаться. Стажер значит ещё где-то это сделает.

>с учетом того, что он до макушки набит нечистым
Внутри у Microsoft-а всё допиленно ещё с .NET 3.5 и видимо используется для сборки .NET framework.
Поэтому весь фреймворк заботливо размечен специальным образом (https://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.pureattribute(v=vs.110).aspx), конечно эти метаданные доступны и компайл-тайм тоже.

Date: 2015-09-14 05:37 am (UTC)
From: [identity profile] rblaze.livejournal.com
Да, это целый класс проблем, и я хочу от него избавиться. One class at a time, так сказать. А про аттрибут смешно. Я, конечно, рад, что фреймворк размечен, хотя за пять минут так и не нашел способа посмотреть на это из студии, но я даже примерно не представляю как скрестить эту разметку и ее валидацию с linq, например. Он же внутри себя очень бодренько использует mutable state, хотя наружу этого и не показывает.

Date: 2015-09-14 07:43 am (UTC)
From: [identity profile] 109.livejournal.com
а какая разница, что внутри? чистая функция - это контракт, должна быть чистой при взгляде снаружи, и только.

и эта разметка отлично скрещена с linq, и даёт ворнинги при компиляции, если что не так.

Date: 2015-09-14 07:51 am (UTC)
From: [identity profile] rblaze.livejournal.com
Это очень важно, что внутри, потому что то и дело оказывается, что надо написать точно такое же, но с перламутровыми пуговицами. И в этот момент, если внутри некромантия и жевательная резинка, жизнь становится очень грустной.

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 16th, 2026 05:04 am
Powered by Dreamwidth Studios