↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Временно не работает,
как войти читайте здесь!
Ластро
21 июня 2015
Aa Aa
От Excel к Haskell или функциональное программирование на пальцах.

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

      Итак поехали. Что видит человек открывая Excel или любую другую аналогичную программу? Перед ним простирается массив ячеек, каждая из которых уникальна, имеет адрес, и содержимое. Но в целом все их можно разбить на две группы, те которые содержат непосредственно данные "как есть", и те которые содержат вычисление -- функцию. Функция, может иметь всё нужное или ссылаться на другие ячейки. Всё, больше там ничего нет, всё остальное никоим образом не относиться к вычислению, а значит нас не интересует.

      Как не трудно заметить картина мира стала очень проста. Осталось лишь это изобразить в рамках нашего функционального языка. Открываем любой текстовый редактор(главное чтоб он позволял вам сохранять файл в нужном разрешении), и сохраняем пустой файл с именем Main.hs (Внимание имя файла обязательно(!) с большой буквы!). Всё, перед вами полный аналог чистого экселевского листа, который к слову ровно точно так-же ничего не делает. Проверить? Включаем интерпретатор ghci (который вы уже конечно взяли с официального сайта).

      Вводим туда команду:":l Main.hs". Ответ интерпретатора: "Модуль "Main" загружен"... Увы как уже было сказано, пока он ровным счётом ничего не делает. Исправим!
      В Excel основным строительным материалом служит ячейка, в Хаскеле - функция. Ячейки строго упорядочены, функции в файле можно располагать в любом удобном вам порядке. Вместо координат - имя.
      Предположим у нас есть простой экселевский файл, из двух столбиков, где в первом записаны имена, а во втором зарплата. Задача найти сколько получит рядовой ИТОГО ;)
      Открываем наш файл, и пишем туда примерно следующее. Сохраняем файл. А в интерпретаторе вводим ":r", чтобы перезагрузить файл, и имя интересующей нас функции-ячейки(в дальнейшем просто функции), чтобы посмотреть её значение.
      В принципе этого достаточно, чтобы посмотрев названия базовых функций проводить простые вычисления. Но... давайте не будем извращаться, и значительно упростим себе жизнь. Как это сделать расскажу в следующий раз. А пока просто выйдем из интерпретатора набрав команду ":q".

P.S. Прошу критику, предполагаемый уровень "для совсем чайников". Материала много, а излагать его нужно по возможности просто.

#Haskell
21 июня 2015
26 комментариев из 42
Ластро
Sore wa himitsu desu, я не помню может ли стандартный виндовый блокнот сохранять в произвольном формате... По поводу некорректности такого написания согласен.
ДНИЩE--ЫЫЫЫ
блокнот может
Ластро
Внёс правку.
ДНИЩE--ЫЫЫЫ
Еще я думаю, стоит написать про гуишный winGHCi, идущий в комплекте платформы
т.к. многим будет удобнее консоли
Блокнот может, но там не будет подсветки синтаксиса или как это называется. Хотя вначале это может и путать. А еще добавить, что такое хаскель, надо.
Lucinda, возьми Haskell Platform, у меня в загашниках лежит 2013.2.0.0
Просветитель, хех. Алу надо дать должность типа Главный Просветитель и Событий Осветитель Блогов. Проще: Главный по Свету, ГлавСвета.
Ни фига не понятно - что это вообще и зачем. как нам это жизнь облегчает?
зачем мне не в клеточки набивать данные, а писать какие-то длинные строки, потом какие-то через жо редакторы, расширения, компиляторы, интерпретаторы... зачем мне запускать какой-то файл, и что с того будет? в чём результат данных манипуляций? и в чем это лучше экселя?

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

ну, и да, я не чайник. у чайника от этого текста просто глаз выпадет.
чайнику нужно много картинок, желательно - на каждый шаг картинку, чайники они часто расширить колоночки в экселе не умеют: число не входит - паника - ничего не считается - ура калькулятору
Кстати, да. Больше картинок богу картинок! Желательно сделать учебник в виде комикса:)
Среднему чайнику, если уж расти от Экселя, пользительней будут примеры программирования на VB, которые он(а) хоть сможет применять в своей работе.
Ластро
Так, всем спасибо, буду думать. Насчёт картинок тоже.
Ластро
uncleroot На визуал бейсик прийдётся менять парадигму вычислений(действия вместо функций). А здесь, имея навык можно делать быстрее, тоже самое.
Я более про то, что средний офисный Эксель-юзер вряд ли будет ставить Хаскел для решения своих задач.
И переносимость тоже имеет значение - сделал я большой сложный ксл-файл рассчета бизнес-кейса - и я должен быть уверен, что даже финансовый директор, открыв этот файл, увидит те же результаты без лишних действий.
Ластро
uncleroot , а вот последнее действительно важно.
Ластро
Корректировать именно этот участок я пока не буду. Просто чуть позже выложу дополненный. Возможно разбив на две части, предисловие и собственно начало. Посмотрим что получится.
Виктор, зачем мне брать эту платформу, если я не знаю что это и зачем. Пока я вижу калькулятор, который и на питоне можно набрать.
Ластро
Lucinda, я тебя понял, твои аргументы разумны. И вполне конкретны. Мне нужно написать нормальное введение. В общем то, чего я делать больше всего не хочу.
"то, чего я делать больше всего не хочу", потому что жизнь - это боль?:)
Ластро
Жизнь -- страдание. Мир -- майа. Убился бы, но не поможет ибо смотри пункт второй, а потому смотри пункт первый :(
*злорадство-злорадство-злорадство:)*
Тяжела доля ответственного за культпросвет:)
Вообще-то, в больших отчетах, когда нужно не просто з/п посчитать, но и различные экономические показатели (в штуках, рублях, процентах) да ещё и за разные периоды сравнивать, то важен и формат данных, и даже шрифты, цвета, группировки...
Ластро
Ой, ё... впрочем тут задача не пересадить с экселя на Хаскель, тут задача отталкиваясь от чего-то простого и понятного, объяснить что-то "таинственное" и "страшное".
ДНИЩE--ЫЫЫЫ
Ну да. Ты попытался ввести Хаскель как альтернативу Экселю, хоть это не совсем так, лол.
Ластро
Sore wa himitsu desu, что непонятного в фразе "задача отталкиваясь от чего-то простого и понятного, объяснить что-то "таинственное" и "страшное""?
ДНИЩE--ЫЫЫЫ
Забей
Суть в том
что я не МАНУЛ
ПОИСК
ФАНФИКОВ







Закрыть
Закрыть
Закрыть