Aa | Aa |
Коллекции загружаются
От Excel к Haskell или функциональное программирование на пальцах.
Немного о повествовании, я планирую серию мелих заметок, в которых идя от простого буду постепенно раскрывать перед вами красоту функционального программирования. Сначала нарисую то как вижу сам обычный Excel, покажу как это имитируется, а потом буду шаг за шагом указывать на места в которых можно сделать проще, красивее, изящнее. Весь путь мы пройдём вместе с интерпретатором, компилируемую программу напишем в самом конце. А потому первое, что вам нужно сделать если планируете со мной, установить его. Берём последнюю версию с официального сайта, не стесняемся. Итак поехали. Что видит человек открывая Excel или любую другую аналогичную программу? Перед ним простирается массив ячеек, каждая из которых уникальна, имеет адрес, и содержимое. Но в целом все их можно разбить на две группы, те которые содержат непосредственно данные "как есть", и те которые содержат вычисление -- функцию. Функция, может иметь всё нужное или ссылаться на другие ячейки. Всё, больше там ничего нет, всё остальное никоим образом не относиться к вычислению, а значит нас не интересует. Как не трудно заметить картина мира стала очень проста. Осталось лишь это изобразить в рамках нашего функционального языка. Открываем любой текстовый редактор(главное чтоб он позволял вам сохранять файл в нужном разрешении), и сохраняем пустой файл с именем Main.hs (Внимание имя файла обязательно(!) с большой буквы!). Всё, перед вами полный аналог чистого экселевского листа, который к слову ровно точно так-же ничего не делает. Проверить? Включаем интерпретатор ghci (который вы уже конечно взяли с официального сайта). Вводим туда команду:":l Main.hs". Ответ интерпретатора: "Модуль "Main" загружен"... Увы как уже было сказано, пока он ровным счётом ничего не делает. Исправим! В Excel основным строительным материалом служит ячейка, в Хаскеле - функция. Ячейки строго упорядочены, функции в файле можно располагать в любом удобном вам порядке. Вместо координат - имя. Предположим у нас есть простой экселевский файл, из двух столбиков, где в первом записаны имена, а во втором зарплата. Задача найти сколько получит рядовой ИТОГО ;) Открываем наш файл, и пишем туда примерно следующее. Сохраняем файл. А в интерпретаторе вводим ":r", чтобы перезагрузить файл, и имя интересующей нас функции-ячейки(в дальнейшем просто функции), чтобы посмотреть её значение. В принципе этого достаточно, чтобы посмотрев названия базовых функций проводить простые вычисления. Но... давайте не будем извращаться, и значительно упростим себе жизнь. Как это сделать расскажу в следующий раз. А пока просто выйдем из интерпретатора набрав команду ":q". P.S. Прошу критику, предполагаемый уровень "для совсем чайников". Материала много, а излагать его нужно по возможности просто. #Haskell 21 июня 2015
|
Блокнот может, но там не будет подсветки синтаксиса или как это называется. Хотя вначале это может и путать. А еще добавить, что такое хаскель, надо.
1 |
Lucinda, возьми Haskell Platform, у меня в загашниках лежит 2013.2.0.0
|
Просветитель, хех. Алу надо дать должность типа Главный Просветитель и Событий Осветитель Блогов. Проще: Главный по Свету, ГлавСвета.
|
Кстати, да. Больше картинок богу картинок! Желательно сделать учебник в виде комикса:)
|
Среднему чайнику, если уж расти от Экселя, пользительней будут примеры программирования на VB, которые он(а) хоть сможет применять в своей работе.
1 |
Ластро
|
|
Так, всем спасибо, буду думать. Насчёт картинок тоже.
|
Ластро
|
|
uncleroot На визуал бейсик прийдётся менять парадигму вычислений(действия вместо функций). А здесь, имея навык можно делать быстрее, тоже самое.
|
Я более про то, что средний офисный Эксель-юзер вряд ли будет ставить Хаскел для решения своих задач.
1 |
Ластро
|
|
uncleroot , а вот последнее действительно важно.
|
Ластро
|
|
Корректировать именно этот участок я пока не буду. Просто чуть позже выложу дополненный. Возможно разбив на две части, предисловие и собственно начало. Посмотрим что получится.
|
Виктор, зачем мне брать эту платформу, если я не знаю что это и зачем. Пока я вижу калькулятор, который и на питоне можно набрать.
1 |
Ластро
|
|
Lucinda, я тебя понял, твои аргументы разумны. И вполне конкретны. Мне нужно написать нормальное введение. В общем то, чего я делать больше всего не хочу.
|
"то, чего я делать больше всего не хочу", потому что жизнь - это боль?:)
|
Ластро
|
|
Жизнь -- страдание. Мир -- майа. Убился бы, но не поможет ибо смотри пункт второй, а потому смотри пункт первый :(
|
*злорадство-злорадство-злорадство:)*
Тяжела доля ответственного за культпросвет:) |
Ластро
|
|
Ой, ё... впрочем тут задача не пересадить с экселя на Хаскель, тут задача отталкиваясь от чего-то простого и понятного, объяснить что-то "таинственное" и "страшное".
|
ДНИЩE--ЫЫЫЫ
|
|
Ну да. Ты попытался ввести Хаскель как альтернативу Экселю, хоть это не совсем так, лол.
|
Ластро
|
|
Sore wa himitsu desu, что непонятного в фразе "задача отталкиваясь от чего-то простого и понятного, объяснить что-то "таинственное" и "страшное""?
|
ДНИЩE--ЫЫЫЫ
|
|
Забей
Суть в том что я не МАНУЛ |