Изучай Haskell во имя добра! - [2]
Напоследок, впрочем, стоит отметить и некоторые недостатки. Автор сам признаётся, что написал свою книгу с целью структуризации и классификации собственных знаний о языке Haskell. Так что к ней надо относиться с определённой долей осторожности, хотя в процессе научного редактирования не было обнаружено фактологических ошибок. Ещё один минус – полное отсутствие каких-либо сведений об инструментарии языка: читателю предлагается лишь скачать и установить Haskell Platform, а затем приступать к работе. Можно именно так и поступить, но вдумчивому читателю будет интересно узнать о способах использования инструментария. Этот пробел можно восполнить книгой [1].
В целом книгу Мирана Липовачи можно рекомендовать в качестве дополнительного источника информации о практическом использовании языка Haskell. Она будет полезна всем, кто интересуется функциональным программированием, равно как и студентам, обучающимся по специальностям, связанным с программированием и вычислительной техникой.
ДУШКИН Роман Викторович, автор первых книг о языке Haskell на русском языке, Москва, 2011 г.
1. Душкин Р. В. Практика работы на языке Haskell. – М.: ДМК-Пресс, 2010. – 288 стр., ил. – ISBN 978-5-94074-588-4.
2. Душкин Р. В. Функциональное программирование на языке Haskell. – М.: ДМК-Пресс, 2007. – 608 стр., ил. – ISBN 5-94074-335-8.
3. Davie A. J. T. Introduction to Functional Programming Systems Using Haskell. – Cambridge University Press, 1992. – 304 p. – ISBN 0-52127-724-8.
4. Doets K., Eijck J. v. The Haskell Road To Logic, Maths And Programming. – King’s College Publications, 2004. – 444 p. – ISBN 0-95430-069-6.
5. Hudak P. The Haskell School of Expression: Learning Functional Programming through Multimedia. – Cambridge University Press, 2000. – 382 p. – ISBN 0-52164-408-9.
6. O’Sullivan B., Goerzen J., Stewart D. Real World Haskell. – O’Reilly, 2008. – 710 p. – ISBN 0-596-51498-0.
7. Thompson S. Haskell: The Craft of Functional Programming. – Addison Wesley, 1999. – 512 p. – ISBN 0-20134-275-8.
Введение
Перед вами книга «Изучай Haskell во имя добра!» И раз уж вы взялись за её чтение, есть шанс, что вы хотите изучить язык Haskell. В таком случае вы на правильном пути – но прежде чем продолжить его, давайте поговорим о самом учебнике.
Я решился написать это руководство потому, что захотел упорядочить свои собственные знания о Haskell, а также потому, что надеюсь помочь другим людям в освоении этого языка. В сети Интернет уже предостаточно литературы по данной теме, и когда я сам проходил период ученичества, то использовал самые разные ресурсы.
Чтобы поподробнее ознакомиться с Haskell, я читал многочисленные справочники и статьи, в которых описывались различные аспекты при помощи различных методов. Затем я собрал воедино все эти разрозненные сведения и положил их в основу собственной книги. Так что этот учебник представляет собой попытку создать ещё один полезный ресурс для изучения языка Haskell – и есть вероятность, что вы найдёте здесь именно то, что вам нужно!
Эта книга рассчитана на людей, которые уже имеют опыт работы с императивными языками программирования (C++, Java, Python...), а теперь хотели бы попробовать Haskell. Впрочем, бьюсь об заклад, что даже если вы не обладаете солидным опытом программирования, с вашей природной смекалкой вы легко освоите Haskell, пользуясь этим учебником!
Моей первой реакцией на Haskell было ощущение, что язык какой-то уж слишком чудной. Но после преодоления начального барьера всё пошло как по маслу. Даже если на первый взгляд Haskell кажется вам странным, не сдавайтесь! Освоение этого языка похоже на изучение программирования «с нуля» – и это очень занимательно, потому что вы начинаете мыслить совершенно иначе...
ПРИМЕЧАНИЕ. IRC-канал >#haskell
на Freenode Network – отличный ресурс для тех, кто испытывает затруднения в обучении и хочет задать вопросы по какой-либо теме. Люди там чрезвычайно приятные, вежливые и с радостью помогают новичкам.
Так что же такое Haskell?
Язык Haskell – это чисто функциональный язык программирования. В императивных языках результат достигается при передаче компьютеру последовательности команд, которые он затем выполняет. При этом компьютер может изменять своё состояние. Например, мы устанавливаем переменную >a
равной 5, производим какое-либо действие, а затем меняем её значение... Кроме того, у нас есть управляющие инструкции, позволяющие повторять несколько раз определённые действия, такие как циклы >for
и >while
. В чисто функциональных языках вы не говорите компьютеру, как делать те или иные вещи, – скорее вы говорите, что представляет собой ваша проблема.
Факториал числа – это произведение целых чисел от 1 до данного числа; сумма списка чисел – это первое число плюс сумма всех остальных чисел, и так далее. Вы можете выразить обе эти операции в виде функций. В функциональной программе нельзя присвоить переменной сначала одно значение, а затем какое-то другое. Если вы решили, что >a
будет равняться 5, то потом уже не сможете просто передумать и заменить значение на что-либо ещё. В конце концов, вы же сами сказали, что
![Изучаем Java EE 7](/storage/book-covers/e0/e0ee9b7e3e4f168a93df98d7e47d66089eac3652.jpg)
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
![Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше](/storage/book-covers/d0/d0fc13172d4310c9da7b10ba57a3fcb2e3d9f10d.jpg)
Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.
![Перевод в электронный формат, кодированные наборы шрифтов и система Оптического Распознавания Символов для многошрифтовых информационных ресурсов на примере “Летописи журнальных статей”](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Java 7](/storage/book-covers/0c/0c854895249b5022dc4112a36f32ee3e02d18559.jpg)
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
![Экстремальное программирование. Разработка через тестирование](/storage/book-covers/dd/dda689ec4f767ab4657b7012084c0637cde96fb0.jpg)
Возвращение знаменитого бестселлера. Изящный, гибкий и понятный код, который легко модифицировать, который корректно работает и который не подкидывает своим создателям неприятных сюрпризов. Неужели подобное возможно? Чтобы достичь цели, попробуйте тестировать программу еще до того, как она написана. Именно такая парадоксальная идея положена в основу методики TDD (Test-Driven-Development – разработка, основанная на тестировании). Бессмыслица? Не спешите делать скороспелые выводы. Рассматривая применение TDD на примере разработки реального программного кода, автор демонстрирует простоту и мощь этой методики.
![Обработка событий в С++](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.