1. にゃおのリテラシーを考えるラジオ
  2. #536 【技】関数型言語は..
2023-04-26 05:21

#536 【技】関数型言語は挫折した

プログラミング言語を学び始めた頃に、LISPという言語に出会って以来、ずっと関数型言語を学ぼうとしては挫折しているのだ。

というお話です。

にゃおの考える現代の基礎的なリテラシーは、ITをきちんと使えることが含まれます。

そのためにどのような問題があり、どう解決していったらよいか考えてみるPodcastです。

#508 【技】ChatGPTにトークシナリオを作ってもらった話 https://open.spotify.com/episode/6Sw7gz33DosbprkO0tmkwq?si=ff1d52630f28439f

#500 【談】ノーマスク解禁!春メイクはこれで勝負!づめのメイク講座 

https://youtu.be/ctdrGhEwxfs

#421 【占】あけましておめでとうございます!2023を計画する
https://youtu.be/3pW_FyTXjzI

#400 【談】ポッドキャスト配信が400回目になったのでゲストをお招きしてトークします!
https://youtu.be/6mcXQwfHwVA

Davinci Resolveのダウンロードサイト
https://www.blackmagicdesign.com/jp/products/davinciresolve

Vrew
https://vrew.voyagerx.com/ja/

配信書き起こし
https://note.com/nchiba

twitter @nchiba

YouTube
https://www.youtube.com/@nyaos

「読書と編集」の活動は、
https://www.nyaos.net/

ストアカの「読書と編集のITリテラシー教室」は、
https://www.street-academy.com/steachers/468576?conversion_name=direct_message&tracking_code=62e788e6ff484f6d2952151bb9c955b4 

をご覧ください。

プログラミング言語の歴史と背景
にゃおのリテラシーを考えるラジオ、読書と編集の千葉直樹です。
このチャンネルでは、読書とIT時代の読書ソロ版を中心に、様々な話をしています。
今回のタイトルは、「関数型言語は挫折した。」というものです。
水曜日は、ITを中心とした技術的な話をしています。
僕が最初に習得したプログラミング言語は、ベーシックでした。
昔はパソコンといったら、電源を入れるとベーシックが立ち上がるという代物でしたから、最初に覚えるのはベーシックということになっていたわけです。
次に関心を持ったのは、リスプという言語でした。
あまり聞いたことがない名前だと思いますが、当時は人工知能言語なんて言われていたもので、リスト構造というものが特徴で、
数値計算が主体のコンピューターの世界で文字列を扱うのが比較的得意であり、プログラムとデータに区別がないという面白い性質を持つ言語です。
コンピューター科学の勉強をしたことがある方は、「ああ、あのカッコのおばけね。」というかもしれません。
特徴であるリスト構造を表現するのに、リストの要素をカッコで括って表すので、プログラムもデータもカッコだらけになるのです。
プログラムもカッコで括るリスト構造で表すわけですが、それはすべて関数という形で書く必要があるのです。
多分。多分というのは、僕がLispを知った頃はLisp処理系は身近になかったので、もっぱら専門書を読んで頭の中でシミュレーションするしかなかったのです。
この頭の中でシミュレーションするというやり方をUNIXの操作でもよくやっていて、C言語も最初は脳内シミュレーションから始めたのでした。
この脳内シミュレーションという方法は、ベーシックのような手続型言語ではなんとかなるのですが、構造化プログラミングで処理を分割してサブルーチン化するということを多用するようになると、想像が難しくなります。
今処理がどこにいるのか終えなくなるのです。
あっという間に脳内スタックが溢れてしまうという感じ。
Lispという言語は関数型言語という括りの中にありますが、これはさらに徹底してスタックを積み続ける言語ですから、手続型の考え方では全く歯が立たないのです。
関数型言語の考え方
数学の世界の関数という抽象化した考え方が必要…らしいです。
ChatGPTに関数の意味を一言で言ってとお願いしてみたらこんな感じでした。
数学的には一つの集合から別の集合への写像として定義されます。
これは分かりやすい。
Googleで関数とはと検索すると、ボックスフォードランゲージの定義として、ある集合の元またはいくつかの集合からそれぞれに取った元の組に応じて、その集合のうちの一つまたは他の集合の一つの元、これを関数値というか定まるという対応関係ということらしいです。
とにかく僕の場合は関数というものがとても想像しにくいのです。
そんなわけで関数っぽい書き方でプログラムを書くことはできますが、純粋に関数としてプログラミングするのはとても無理でした。
今はリスプというとカーとクダーしか覚えていません。
関数型言語は他にもいろいろあり、たびたび話題になることがあるので、何とかものにしたいと思っているのですが、未だに挫折してしまうのですね。
このままでは来世になってしまうかもしれません。今回は、関数型言語は何度挑戦しても挫折するという話でした。
読書と編集では、ITを特別なものではなく、常識的なリテラシーとして広める活動をしています。
ITリテラシーの基礎を学べるオンライン講座をやっています。
詳しい内容については概要欄のリンクから、または、読書と編集と検索して、猫がトップページに出てくるホームページをご覧ください。
この配信の書き起こしをnoteで連載しています。概要欄にリンクがありますので、フォローいただけると嬉しいです。
今日もワクワクする日でありますように。
しばなおきでした。ではまた。
05:21

コメント

スクロール