プログラミング蚀語の歎史Haskellが関数型プログラミング暙準になった経緯





呜什型プログラミングの理論的基瀎は、20䞖玀の30幎代にアランチュヌリングずゞョンフォンノむマンによっお解かれたした。 機胜的アプロヌチの根底にある理論は、20代ず30代に圢成されたした。 関数型プログラミングの数孊的基盀の開発者には、モヌれスシェヌンフィンケルドむツずロシア、ハスケルカレヌむギリス、アロンゟ教䌚アメリカがありたす。 シェヌンフィンケルずカリヌは組み合わせ論理の基瀎を築き、教䌚はラムダ蚈算の䜜成者です。



関数型プログラミングは、組み合わせロゞックずラムダ蚈算からのアむデアに基づいおいたす。



しかし、1950幎代初頭にJohn McCarthyがLisp蚀語1958を開発するたで、理論は理論のたたでした。これが最初のほが機胜的なプログラミング蚀語になりたした。 Lispには長幎競合他瀟がいたせんでした。 その埌、関数型プログラミング蚀語APL1964、ISWIM1966、およびFP1977が登堎したしたが、これらはそれほど広く䜿甚されおいたせんでした。



Lispは、時間の経過ずずもに、特にプログラムコヌドの量ず耇雑さの増倧により、プログラム開発者のいく぀かの芁件を満たすこずをやめたした。 この状況に関連しお、タむピングの圹割が増え始めたした。 20䞖玀の70幎代埌半から80幎代初頭に、関数型蚀語に適したタむピングモデルが集䞭的に開発されたした。



これらのモデルのほずんどには、デヌタの抜象化やポリモヌフィズムなどの匷力なメカニズムのサポヌトが含たれおいたした。 ML、Scheme、Hope、Miranda、Cleanなど、倚くの型付き関数型蚀語が登堎したした。 さらに、方蚀の数は絶えず増加しおいたした。

ML1973-最初のHindley – Milnerタむピング蚀語。

Scheme1975は、Lisp蚀語で最も人気のある2぀の方蚀の1぀です。

SASL、KRC、ミランダ1972–1985-最初の遅延蚀語の1぀。

Hope1980は、代数的デヌタ型を持぀最初の蚀語の1぀です。




ハスケルカレヌ



その結果、関数型プログラミングに関䞎するほがすべおのグルヌプが独自の蚀語を䜿甚しおいるこずが刀明したした。 これにより、これらの蚀語のさらなる普及が劚げられ、倚くの問題が発生したした。



Haskell蚀語の歎史は1987幎に始たりたす。 次々ず、新しい関数型プログラミング蚀語が登堎したした。 MirandaResearch Software Ltd、1985のリリヌス以来、レむゞヌコンピュヌティングぞの関心が高たっおいたす。1987幎たでに、12を超える非厳密な玔粋関数型プログラミング蚀語が登堎したした。



ミランダは最も広く䜿甚されおいたしたが、゜フトりェアの特蚱を取埗しおいたした。 オレゎン州ポヌトランドで開催された関数型プログラミング蚀語ずコンピュヌタヌアヌキテクチャに関する䌚議FPCA、1987幎で、参加者は、そのような蚀語のオヌプンスタンダヌドを定矩する委員䌚を蚭立するこずに同意したした。 委員䌚の目的は、既存の関数型蚀語を1぀の共通蚀語に結合するこずでした。これは、関数型プログラミング蚀語の開発における将来の研究の基瀎を提䟛したす。



そこで、Haskellがいたした。 組み合わせ論理の創始者の䞀人、Haskell Curryにちなんで名付けられたした。



1980幎代の終わりたでに、倚くの関数型蚀語が䜜成されたした。 それらのいく぀かはHaskellに倧きな圱響を䞎えたした







新しい蚀語は、研究ず実際の問題に適した自由蚀語になるこずでした。 無料の蚀語は、開発者委員䌚によっお策定された暙準に基づいおいたす。 その埌、誰でも暙準の実装を開始し、蚀語コンパむラを䜜成できたす。 Haskell暙準の最初のバヌゞョンは、1990幎4月1日に公開されたした。



Haskell 1.0-1.4



Haskellの最初のバヌゞョンHaskell 1.0は1990幎にリリヌスされたした。 委員䌚の詊みは、䞀連の蚀語実装1.0、1.1、1.2、1.3、1.4をもたらしたした。







ハスケル98



1997幎の終わりに、Haskell 98は、将来の開発の基瀎ずしお、1぀の安定した、最小限の、移怍可胜なバヌゞョンの蚀語ず、研究甚の付属暙準ラむブラリで指定する必芁がありたした。 委員䌚は、実隓的な機胜を远加および導入するこずにより、haskell 98の拡匵およびバリ゚ヌションの䜜成を積極的に受け入れたした。



1999幎2月、Haskell 98蚀語暙準が最初にThe Haskell 98 Reportずしお公開されたした。 2003幎1月、修正版が「Haskell 98蚀語ずラむブラリ改蚂レポヌト」ずしお公開されたした。 蚀語は急速に進化し続け、グラスゎヌHaskellコンパむラGHCコンパむラの実装は実際の蚀語暙準を衚しおいたす。



Haskell 2010



Haskellの珟圚の暙準であるHaskell 2010は、2009幎11月24日に発衚されたした。 GHCは、バヌゞョン7.0.1以降、これをサポヌトしおいたす。



Haskell '98ず比范するず、次の倉曎が含たれおいたす。



•Do Then If Then

•階局モゞュヌル

•空の倉数の宣蚀

•持続可胜性゜リュヌション

•サヌドパヌティの機胜むンタヌフェむス

•線圢コメント構文

•ガヌドパタヌン

•軜量の䟝存関係分析

•蚀語の指瀺プラグマ

•n + kパタヌンの欠劂







2011幎1月7日に远加の倉曎が公開されたした。



•デヌタ型コンテキストの欠劂

•箇条曞きの倉数リスト



Haskellは今日も進化を続けおいたす。 ただし、安定バヌゞョンはそれぞれ1998幎ず2010幎の暙準に基づいおいたす。 しかし、それらに加えお、倚くの拡匵機胜がHaskellに含たれおおり、垞に新しいアむデアが導入されおいたす。 䞖界のいく぀かの囜がこの蚀語に取り組んでいたす-これらはむギリス、オランダ、アメリカ、オヌストラリアです。 Haskellぞの関心は、マルチプロセッサテクノロゞヌの人気によるものです。 Haskellモデルは、䞊列蚈算に適しおいたす。



Haskellの䜜成者から



Curryは、Haskell蚀語の䞊に実装された汎甚の組み蟌みプログラミング蚀語です。 カリヌ蚀語は、関数型プログラミングネストされた匏、高次関数、レむゞヌコンピュヌティング、論理プログラミング論理倉数、郚分デヌタ構造、組み蟌み怜玢システム、および䞊列システムのプログラミング方法論理倉数による同期を䌎う䞊列匏蚈算の可胜性をシヌムレスに組み合わせたす



さらに、カリヌは、玔粋なプログラミング蚀語ず比范しお远加のメカニズムを提䟛したす関数型蚀語ず比范しお、論理蚀語ず比范しお、䞍完党なデヌタを䜿甚した怜玢ず蚈算は、決定論ず関数の必芁に応じお呌び出すため、より効率的な蚈算メカニズムです。


人気床



Githubは珟圚、プログラミング蚀語の䞭で23番目に人気がありたす。



TIOBE むンデックスでは、38番目にありたす。







RedMonk Haskellのランキングでは非垞に高く、16䜍です。 この堎合、評䟡は、GitHubでの人気ずStack Overflowでのディスカッションのアクティビティの組み合わせの評䟡に基づいおいたす。



プロゞェクト



Haskellは倚くの耇雑なプロゞェクトを実装しおいたす



•コンパむラおよびその他の開発ツヌル。



•分散Darcsバヌゞョン管理システム。



•りィンドりマネヌゞャヌxmonad 。



• HAppS Webアプリケヌションサヌバヌ 。



•Perl 6甚のパグむンタヌプリタヌ/コンパむラ。



•オペレヌティングシステムハりス 。



• Lavaハヌドりェア蚘述蚀語。



•LOLITA自然蚀語凊理システム。



• Equinox / ParadoxおよびAgdaの定理の蚌明システム。



フェむスブック



スパムフィルタリングは、Facebookの゚ンゞニアが解決する最も重芁なタスクの1぀です。 最倧の゜ヌシャルネットワヌクは15億人を超える人々からのメッセヌゞを凊理するため、問題の芏暡を掚定できたす。 2015幎に、同瀟はHaskellプログラミング蚀語を䜿甚した新しいスパム察策フィルタヌを導入したした。







その若さ、実隓的地䜍、比范的䜎い人気にもかかわらず、FacebookはHaskellを遞択しお重芁なモゞュヌルを䜜成したした。 新しいスパム察策フィルタヌの開発チヌムの䞀員である゚ンゞニアの1人であるLouis Brandyは、このプロゞェクトに同僚ず2幎間を費やしたした。 Wiredずのむンタビュヌで、圌はそれらがどのように誘導されたかを説明したした。



ルむスブランディは慎重に蚀葉を遞び、HaskellをFacebookにスパムフィルタヌを実装するのに理想的ず呌んでいたす。 Facebookは非垞に倧きなプロゞェクトであり、スパマヌはすぐに戊術を倉曎するため、すぐに有効になるスパムフィルタヌを開発し、垞に倉曎するツヌルが必芁です。



珟代のむンタヌネットの開発を芋るず、倚くのむンタヌネットプロゞェクトがこのパスに沿っお行われるべきです。そのためには、スケヌラビリティずリアルタむムの応答が重芁です。 Facebookの開発者によるず、Haskell蚀語には幅広い人気のあらゆるチャンスがありたす。 Haskellが他の蚀語ずはたったく異なるずいう事実のみが干枉したす-そしお、これにより、Haskellぞの倧量移行が困難になりたす。



それでも、業界は間違いなく正しい方向に動いおいたす。たずえば、GoogleのGoやMozillaのRustなど、䞊列プロセス向けの新しいプログラミング蚀語の䟋が瀺しおいたす。 Haskellほど効果的ではありたせんが、孊習は簡単です。 いずれにしおも、Haskellは、他のプログラミング蚀語の開発を掚進し、新しい有望なプロゞェクトの立ち䞊げを促進しおくれたこずに感謝するこずができたす。



Evgeny Kozlovは圌のブログでHaskellずの共同䜜業の印象に぀いお語っおいたす。





短所


たず第䞀に、蚀語を入力するための高いしきい倀。 はい、Haskellは矎しく、きれいで簡朔ですが、これは無料で実珟されおいるのではなく、脳の長い再構築ずモナド、モナド倉換噚、レンズ、機械などの耇雑な抜象化の研究によっお実珟されおいたす。



第二に、生産的なコヌドを曞くこずの難しさです。 Haskellのすべおのコヌドは遅延しおいるため、ギガバむトの保留䞭の蚈算がメモリに栌玍されおいるが、ただ芁求されおいないため蚈算されない状況を簡単に実珟できたす。


プラス偎


たず第䞀に、もちろん、蚀語の玔床。 䞡方の意味での玔床機胜の玔床ずOOPパラダむムの完党な欠劂。 関数のシグネチャを調べお、副䜜甚が発生するかどうかを確認できるのは玠晎らしいこずです。 OOPが存圚しないずいうこずは、基本クラスからサブクラスぞの未怜蚌キャストのような恐ろしいこずを行う方法がないこずを意味したす。



コヌドが蚘述されおいる堎合、2぀の方法で解釈するこずは困難です。 たずえば、Haskellでは関数は最初のクラスのオブゞェクトであるため、Scalaのように関数の䜿甚ず関数ぞの参照を混同するこずはできたせん。 たたは、たずえば、すべおの関数は小文字で始たり、タむプ/クラスは倧文字で始たる必芁があるため、関数をタむプたたはクラスず混同するこずはできたせん。



Haskellに぀いお語るこずが無意味な蚀語機胜は、ポリモヌフィズムです。 Haskellが最倧量の再利甚コヌドを持぀蚀語だず蚀っおも過蚀ではないでしょう。 少なくずもいく぀かの反埩機胜は抜象化されたす。



All Articles