Wpis z mikrobloga

#naukaprogramowania #programowaniefunkcyjne #programowanie

###################

# WSTĘP

###################

Tym razem będzie (prawie) sam zbiór materiałów, bo nie jestem na tyle kompetentny w dziedzinie programowania funkcyjnego żeby wnieść coś twórczego do tematu.

Będzie jednak więcej języków za jednym razem - kolejność przypadkowa.

Nie wrzucam wszystkich materiałów jakie istnieją. Starałem się wybrać te które wiem, że są dobre, te które są polecane jako dobre lub te które wyglądają jakby były dobre.

###################

# JAK SIĘ NIE UCZYĆ

###################

Tylko czytając książki/kursy, tylko oglądając screencasty/prelekcji lub tylko klepiąc kod.

###################

# JAK SIĘ UCZYĆ

###################

Najlepiej połączyć wszystkie 3 rzeczy (czytanie książek/kursów, oglądanie materiałów video i kodowanie przykładowych projektów) razem żeby nauka była różnorodna i możliwie ciekawa.

###################

# CZĘŚĆ WSPÓLNA

###################

Zbiór pomysłów na projekty:

https://warosu.org/data/g/img/0441/94/1410874830625.png

https://github.com/karan/Projects

Strony z zadaniami i zagadkami algorytmicznymi, poćwiczą twoje myślenie i niejednokrotnie optymalizację kodu. Miłe oderwanie od innej nauki. Uwaga - nie przesadzać, bo wpadniesz w złe praktyki i spiralę przedwczesnej optymalizacji.

http://pl.spoj.com/

http://codeeval.com/

https://www.hackerrank.com/

http://www.codechef.com/

https://www.reddit.com/r/dailyprogrammer

https://projecteuler.net/problems

http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504/ - książka o strukturach danych dedykowanych do programowania funkcyjnego - dla dociekliwych

###################

# Haskell

###################

Haskell to najpopularniejszy czysto-funkcyjny język na świecie, jak również drugi (po Scali) najpopularniejszy język funkcyjny. Słynny między innymi z zastosowań w nauce, finansach i obliczeniach, oraz z posiadanie jednego z najbardziej zaawansowanych (i najlepszych) kompilatorów kiedykolwiek stworzonych.

https://en.wikipedia.org/wiki/Haskell_(programming_language)

http://www.haskell.org/haskellwiki/ - źródło linków i wiedzy wszelakiej - centrum języka

KSIĄŻKI - Dostępne za darmo

http://learnyouahaskell.com/chapters - Learn You a Haskell for Great Good! wydawnictwa NoStarch

http://book.realworldhaskell.org/read/- Real World Haskell wydawnictwa O'Reilly

http://chimera.labs.oreilly.com/books/1230000000929/index.html - Parallel and Concurrent Programming in Haskell wydawnictwa O'Reilly

https://en.wikibooks.org/wiki/Haskell - wikiksiążka o Haskellu

KSIĄŻKI

http://www.amazon.com/gp/product/0201882957/ - Haskell: The Craft of Functional Programming (3rd Edition) od wydawnictwa Addison-Wesley

http://www.amazon.com/gp/product/1430262508/ - Beginning Haskell od wydawnictwa Apress

http://www.amazon.com/gp/product/0521692695/ - Programming in Haskell od wydawnictwa Cambridge Press

KURSY

http://shuklan.com/haskell/index.html - kurs University of Virginia

http://www.cis.upenn.edu/~cis194/lectures.html - kurs University of Pennsylvania

https://www.fpcomplete.com/school - wiele kursów, tutoriali i innych materiałów w jednym miejscu od firmy FP Complete

KURS MOOC (jak Coursera)

https://www.edx.org/course/delftx/delftx-fp101x-introduction-functional-2126 - Kurs wprowadzjący do programowania funkcyjnego (autor ten sam co filmów z Channel9)

TUTORIALE

http://lisperati.com/haskell/ - szybki tutorial z komiksowymi ilustracjami

https://www.haskell.org/haskellwiki/Hitchhikers_guide_to_Haskell - Hitchhikers guide to Haskell krótki kurs na HaskellWiki

https://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot - wprowadzenie w Haskella polegające na napisaniu własnego bota IRC

https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours - nauka Haskella polegająca na napisaniu własnego interpretera języka Scheme, najtrudniejsze z przytoczonych wprowadzeń

http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/ - Learn Haskell Fast and Hard to krótki tutorial polecany tu i ówdzie

SCREENCASTY / PRELEKCJE za darmo

http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals - Podstawy programowanie funkcyjnego od Channel 9 Microsoftu

https://www.youtube.com/playlist?list=PLxj9UAX4Em-Ij4TKwKvo-SLp-Zbv-hB4B - Haskell from Scratch, seria pokazująca (między innymi) kodowanie praktycznych programów

https://www.youtube.com/watch?v=3bjXGrycMhQ - Historia Haskella

A Taste of Haskell czyli wprowadznie dla ludzi już będących programistami:

http://www.slideshare.net/oscon2007/os-peytonjones - Slajdy (niezbędne bo nie widać ich na nagraniach)

https://www.youtube.com/watch?v=jLj1QV11o9g - Część 1

https://www.youtube.com/watch?v=IqXTUbdLig0 - Część 2

https://www.youtube.com/playlist?list=PLxj9UAX4Em-Lz5btngxMVZxf_B44GETVz - Haskell Deconstructed czyli seria analizująca/omawiająca źródła różnych otwarto-źródłowych programów napisanych w Haskellu

https://www.youtube.com/watch?v=b9FagOVqxmI - Haskell Amuse-Bouche od Google Tech Talks pokazuje (mniej więcej) co Haskell potrafi i dlaczego jest warty uwagi

SCREENCASTY płatne

Haskell Fundamentals od Pluralsight - dwuczęściowy kurst uczący Haskella od podstaw

http://www.pluralsight.com/courses/haskell-fundamentals-part1

http://www.pluralsight.com/courses/haskell-fundamentals-part2

POZOSTAŁE

http://dev.stephendiehl.com/hask/ - to właściwie zbiór (bardzo wielu) porad które warto znać na takim czy innym etapie nauki Haskella

http://tryhaskell.org/ - 5 minutowe intro do Haskella w całości odbywające się w przeglądarce

http://www.haskellcast.com/ - podcast poświęcony Haskellowi

http://www.reddit.com/r/haskell - reddit haskella

###################

# Elixir

###################

Elixir to bardzo młody język - pojawił się w 2012 roku. Bardzo dynamicznie się rozwija i nabiera tempa. Niedawno wyszła pierwsza naprawdę stabilna wersja. Oparty jest o niezawodną wirtualną maszynę Erlanga (BEAM). Jeżeli chcemy bawić się we wróżenie, to wróżę mu świetlaną przyszłość.

Ze względu na swój wiek ilość materiałów jest mocno ograniczona.

Funfact - programiści Elixiru są nazywani Alchemikami (Alchemists)

https://en.wikipedia.org/wiki/Elixir_(programming_language)

http://elixir-lang.org/ - centrum języka

gp/product

KSIĄŻKI / KURSY - Dostępne za darmo

http://elixir-lang.org/getting_started/1.html - oficjalny kurs języka

http://chimera.labs.oreilly.com/books/1234000001642/index.html - zbiór ćwiczeń dla programistów Elixiru

KSIĄŻKI

http://www.amazon.com/gp/product/1937785580/ - Programming Elixir wydawnictwa Pragmatic Programmers

http://www.amazon.com/gp/product/dp/1449369995/ - Introducing Elixir wydawnictwa O'Reilly

http://www.manning.com/juric/ - Elixir in Action wydawnictwa Manning (w trakcie tworzenia - wczesny dostęp)

KSIĄŻKI - (jeszcze) nie dostępne

http://elixir-for-rubyists.com/ - Elixir for the Functional Rubyist

http://www.exotpbook.com/ - The Little Elixir and OTP Guidebook

SCREENCASTY I INNE

http://www.pluralsight.com/courses/meet-elixir - krótki, płatny, kurs przygotowany przez samego twórcę języka

http://elixirsips.com/ - zbiór screencastów uczących eliksiru i wielu najbardziej popularnych bibliotek (garść darmowych, większość dostępna za opłatą)

http://www.elixirdose.com/ - seria artykułów o samym eliksirze i różnych jego bibliotekach

https://www.youtube.com/watch?v=41PvAPSX0wg - Introduction to Elixir: a New Language on the VM - przedstawienie języka przez jego twórcę

https://www.youtube.com/watch?v=5kYmOyJjGDM - All Aboard The Elixir Express! - 3-godzinne warsztaty Elixiru

http://www.reddit.com/r/elixir - Reddit języka

###################

# Erlang

###################

Erlang to język zaprojektowany do tworzenia programów które "nigdy nie padają". Stworzony przez firmę Ericsson na potrzeby runku telekomunikacyjnego - jest na tym rynku popularny do dziś.

https://en.wikipedia.org/wiki/Erlang_(programming_language)

http://www.erlang.org/ - centrum języka

KSIĄŻKI dostępne za darmo

http://learnyousomeerlang.com/content - Learn You Some Erlang for Great Good! - czyli od zera do programisty Erlanga

http://chimera.labs.oreilly.com/books/1234000000726/index.html - zbiór ćwiczeń dla programistów Erlanga

http://www.erlang-in-anger.com/ - Erlang in Anger to książka o diagnozowaniu, naprawianiu i dbaniu o kod

http://www.erlang.org/download/erlang-book-part1.pdf - Concurrent Programming in ERLANG - o programowaniu współbieżnym w Erlangu

https://github.com/esl/erlang-handbook/raw/master/output/ErlangHandbook.pdf - kolejne zwięzłe przedstawienie Erlanga

http://pl.scribd.com/doc/44221/Thinking-in-Erlang - bardzo krótkie wprowadzenie do Erlanga

KSIĄŻKI

http://www.amazon.com/gp/product/193778553X/ - Programming Erlang Second Edition - książka twórcy samego Erlanga wydawnictwa Pragmatic Programmers

http://www.amazon.com/gp/product/1449331769/ - Introducing Erlang - krótkie wprowadzenie do Erlanga wydawnictwa O'Reilly

http://www.amazon.com/gp/product/0596518188/ - Erlang Programming - dogłębne wprowadzenie do Erlanga wydawnictwa O'Reilly

http://www.amazon.com/gp/product/1933988789/ Erlang and OTP in Action wydawnictwa Manning

SCREENCASTY I INNE

http://shop.oreilly.com/product/0636920020240.do - Erlang by Example - seria screencastów prezentujących język Erlang na przykładach

http://vimeo.com/erlang/videos - zbiór bardzo różnych materiałów video dotyczących Erlanga

https://www.youtube.com/user/ErlangSolutions/videos - zbiór materiałów firmy Erlang Solutions

http://trigonakis.com/blog/series/introduction-to-erlang/ - seria wpisów wprowadzających do Erlanga

http://www.tryerlang.org/ - spróbuj Erlanga w przeglądarce

https://www.reddit.com/r/erlang/ - reddit poświęcony językowi

###################

# Clojure

###################

Implementacja LISPa na wirtualnej maszynie Javy (JVM). To najpopularniejszy dialekt LISPa na świecie i łatwo integruje się z rzeczami napisanymi w Javie.

https://en.wikipedia.org/wiki/Clojure

http://clojure.org/ - centrum języka

KSIĄŻKI I KURSY dostępne za darmo

http://www.braveclojure.com/ - Clojure for the Brave and True - przystępna książka ucząca Clojure

https://github.com/clojure-cookbook/clojure-cookbook - darmowa wersja książki Clojure Cookbook wydawnictwa O'Reilly

http://mooc.cs.helsinki.fi/clojure - kurs Clojure Uniwersytetu w Helsinkach

http://java.ociweb.com/mark/clojure/article.html - Clojure - Functional Programming for the JVM - Krótkie wprowadzenie do programowania funkcyjnego w Clojure

http://www.unexpected-vortices.com/clojure/brief-beginners-guide/ - A Brief Beginner’s Guide To Clojure - zwięzłe wprowadzenie do Clojure dla początkujących

http://daly.axiom-developer.org/clojure.pdf - bardzo rozbudowana książka

http://data-sorcery.org/contents/ - Data Sorcery with Clojure - o Data Science przy pomocy Clojure

KSIĄŻKI

http://www.amazon.com/gp/product/1617291412/ - The Joy of Clojure, Second Edition - bardzo dogłębna książka o języku Clojure wydawnictwa Manning

http://www.amazon.com/gp/product/1934356867/ - Programming Clojure Second Edition - wprowadzenie do Clojure wydawnictwa Pragmatic Programmers

http://www.amazon.com/gp/product/1449394701/ - Clojure Programming - wprowadzenie do Clojure wydawnictwa O'Reilly

http://www.manning.com/rathore2/ - Clojure in Action, Second Edition (w trakcie pisania - wczesny dostęp) wprowadznie do Clojure wydawnictwa Manning

http://www.amazon.com/gp/product/1430272317/ - Practical Clojure to wprowadzenie do programowania funkcyjnego w ogóle i Clojure w szczególe od wydawnictwa Apress

SCREENCASTY (płatne)

http://www.pluralsight.com/courses/functional-programming-clojure

http://www.pluralsight.com/courses/clojure-fundamentals-part-one

http://www.pluralsight.com/courses/clojure-concurrency-tutorial

http://shop.oreilly.com/product/0636920030409.do - Clojure Inside Out od O'Reilly

INNE

https://www.youtube.com/watch?v=SYeDxWKftfA - Uncle Bob prezentuje Clojure

https://www.youtube.com/user/ClojureTV/videos - zbiór różnych video o Clojure

https://www.reddit.com/r/Clojure/ - reddit języka

###################

# Scala

###################

Prawdziwie hybrydowy język łączący programowanie funkcyjne i obiektowe czym podbił sobie serca wielu programistów. Łatwo "mieszalny" z Javą. Określany mianem najpopularniejszego języka funkcyjnego na świecie.

https://en.wikipedia.org/wiki/Scala_(programming_language)

http://www.scala-lang.org/ - centrum języka

KSIĄŻKI dostępne za darmo

http://www.artima.com/pins1ed/ - Programming in Scala, First Edition - pełnoprawna książka ucząca programowania w Scali

http://www.scala-lang.org/docu/files/ScalaByExample.pdf - Scala By Example - jak w tytule, Scala w przykładach

http://danielwestheide.com/scala/neophytes.html - The Neophyte's Guide to Scala to nauka Scali nie od samego zera

KSIĄŻKI

http://www.informit.com/store/scala-for-the-impatient-9780321774095 - Scala for the Impatient - zwięzła nauka Scali od wydawnictwa Addison-Wesley

http://www.amazon.com/gp/product/0981531644/ - Programming in Scala Second Edition - książka krok po kroku ucząca programowania w Scali wydawnictwa Artima

http://www.amazon.com/gp/product/1617290653/ - Functional Programming in Scala - nauka programowania funkcyjnego z użyciem Scali wydawnictwa Manning

http://www.amazon.com/gp/product/1935182706/ - Scala in Depth - książka prezentująca dogłębne zagadnienia takie jak najlepsze praktyki i wzorce wydawnictwa Manning

http://www.amazon.com/gp/product/1935182757/ - Scala in Action wprowadzenie do Scali od wydawnictwa Manning

http://www.amazon.com/gp/product/1449339611/ - Scala Cookbook czyli zbiór gotowych fragmentów kodu i porad jak rozwiązywać popularne problemu w Scali

http://shop.oreilly.com/product/0636920033073.do - Programming Scala

Second Edition czyli wprowadzenie do Scali dla już w czymś programujących wydawnictwa O'Reilly (w trakcie pisania - wczesny dostęp)

http://shop.oreilly.com/product/0636920030287.do - Learning Scala to nauka programowania funkcyjne ze Scalą od zera od wydawnictwa O'Reilly (w trakcie pisania - wczesny dostęp)

http://www.apress.com/9781484202333 - Beginning Scala Second Edition to wprowadzenie do Scali dla początkujących od wydawnictwa Apress (w trakcie pisania - wczesny dostęp)

KURS MOOC

https://www.coursera.org/course/progfun - Functional Programming Principles in Scala uczący programowania funkcyjnego przy pomocy Scali

TUTORIALE

http://docs.scala-lang.org/tutorials/ - A Tour of Scala - oficjalny tutorial Scali

http://naildrivin5.com/scalatour/ - Another Tour of Scala - inny przewodnik po Scali

https://twitter.github.io/scala_school/ - Scala School! - lekcje Scali od Twittera

http://www.scala-lang.org/docu/files/ScalaTutorial.pdf - A Scala Tutorial for Java programmers - Króciutki tutorial wprowadzający do Scali napisany z myślą o programistach Javy

http://aperiodic.net/phil/scala/s-99/ - 99 ćwiczeń dla programistów Scali

SCREENCASTY (płatne)

http://www.pluralsight.com/courses/scala-getting-started - Podstawy Scali od Pluralsight

http://shop.oreilly.com/product/0636920036128.do - Learning Scala Programming - kurs video od Infinite SKills

http://www.informit.com/store/scala-fundamentals-livelessons-video-training-downloadable-9780321927743 - Scala Fundamentals czyli nauka scali od podstaw od wydawnictwa Addison-Wesley

INNE

https://www.youtube.com/watch?v=P8jrvyxHodU - przedstawienie różnych części Scali przez jej twórcę

https://www.reddit.com/r/scala/ - reddit języka

###################

# Lisp - Common Lisp

###################

Lisp to pradziadek, dziadek i ojciec wielu innych funkcyjnych języków programowania. Posiada niezliczoną liczbę dialektów w tym Clojure (opisany wyżej) i Common Lisp będące tymi najpopularniejszymi.

https://pl.wikipedia.org/wiki/Lisp

https://pl.wikipedia.org/wiki/Common_Lisp

http://common-lisp.net/ - centrum języka prowadzone przez Fundację Common Lisp

Najpopularniejszymi darmowymi kompilatorami (implementacjami) Common Lisp są:

CLISP - https://en.wikipedia.org/wiki/CLISP

SBCL - https://en.wikipedia.org/wiki/Steel_Bank_Common_Lisp

KSIĄŻKI dostępne za darmo

http://www.gigamonkeys.com/book/ - Practical Common Lisp darmowa wersja książki wydawnictwa Apress

http://learnlispthehardway.org/book/ - Learn Lisp The Hard Way - książka do nauki Common Lisp od podstaw - wersja Alpha intensywnie modyfikowana

http://clqr.boundp.org/download.html - Common Lisp Quick Reference - przerośnięty Cheet Sheet do języka Common Lisp

https://www.cs.cmu.edu/~dst/LispBook/book.pdf - Common Lisp - A Gentle Introduction to Symbolic Computation czyli wprowadzenie do Common Lisp oparte na obliczeniach

http://psg.com/~dlamkins/sl/contents.html - Successful Lisp: How to Understand and Use Common Lisp - książka raczej dla już w czymś programujących

KSIĄŻKI

http://www.nostarch.com/lisp.htm - Land of Lisp to bogato ilustrowana i przystępna książka ucząca programowania na przykładach prostych gier.

http://www.amazon.com/gp/product/0133708756/ - ANSI Common Lisp - dogłębnie o Common Lisp od wydawnictwa Prentice Hall

TUTORIALE

http://www.lisperati.com/casting.html - Casting SPELs IN LISP krótki tutorial wprowadzający do LISP (uwaga - korzysta z komercyjnej wersji Common Lisp - Allegro Common Lisp od Franz Inc.)

INNE

https://www.youtube.com/watch?v=VeAdryYZ7ak - Practical Common Lisp od Google Tech Talks

https://www.reddit.com/r/lisp/ - reddit wszystkich dialektów

https://www.reddit.com/r/common_lisp - reddit Common Lisp

###################

# F Sharp

###################

F# to język funkcyjny dla platform .NET i Mono stworzony przez Microsoft. Jak łatwo się domyślić, świetnie współpracuje z gotowymi elementami napisanymi dla tych platform nawet w innych językach.

https://en.wikipedia.org/wiki/F_Sharp_(programming_language)

http://fsharp.org/ - centrum języka

KSIAŻKI I TUTORIALE dostępne za darmo

http://www.tryfsharp.org/Learn - tutoriale i materiały prosto od Microsoftu

http://fsharpforfunandprofit.com/ - zbiór artykułów o F#

http://fsharp.org/videos/1 - zbiór video dotyczących F#

https://en.wikibooks.org/wiki/F_Sharp_Programming - wikiksiążka o F#

http://www.syncfusion.com/resources/techportal/ebooks/fsharp - zwięźle o F# (w pola można wpisać praktycznie cokolwiek co pozwoli nam zassać książkę)

KSIĄŻKI

http://www.amazon.com/gp/product/1593275528/ - The Book of F# wprowadzenie do F# od wydawnictwa NoStarch

http://www.amazon.com/gp/product/1449320295/ - Programming F# 3.0 - wprowadzenie do F# od wydawnictwa O'Reilly

http://www.amazon.com/gp/product/1430246502/ - Expert F# 3.0 - książka dogłębnie traktująca o F# od wydawnictwa Apress

SCREENCASTY

http://www.pluralsight.com/courses/fsintro - Introduction to F# - seria Screencastów uczących od zera F#

http://www.pluralsight.com/courses/functional-architecture-fsharp - A Functional Architecture with F# - jak w tytule, uczy architektury funkcyjnej na przykładzie F#

http://www.pluralsight.com/courses/fsharp-functional-data-structures - F# Functional Data Structures czyli nauka struktur danych na przykładzie F#

INNE

https://channel9.msdn.com/Tags/fsharp - różne materiały video od Channel9

https://www.reddit.com/r/fsharp/ - reddit języka

###################

# OCaml

###################

Objective Caml - OCaml To najpopularniejsza implementacja języka Caml z rodziny języków ML. Wspiera programowanie funkcyjne, imperatywne i zorientowane obiektowo. Mimo bardzo małej popularności ma bardzo wierną i stałą grupę programistów która dba o rozwój języka i dodatkowych bibliotek.

https://en.wikipedia.org/wiki/OCaml

https://ocaml.org/ - centrum języka

KSIĄŻKI I TUTORIALE dostępne za darmo
  • 51
Ostatnio na studiach poprawiałem w ostatnim terminie język PROLOG. Obiecałem sobie, że jeśli zdam, to nauczę się jakiegoś języka funkcyjnego. Padło na Clojure,a Ty wstrzeliłeś się z materiałami idealnie!. Super grazie!