プログラミング言語の種類
ちょっと、関連してエッセイ。これは、えっと、プログラミング言語は複数習得すべきっていう、まさに、まさになやつがあるんですけど。
どこでしたっけ。
えっとね。
あるのは覚えてるけど、前みたいに54順じゃないかな。
43番。
43番。はいはいはい。
この中で、プログラミングの言語の種類みたいなとこで、手続型、オブジェクト思考型、関数型、論理型、データフロー型みたいなのが出てきて、
なんとなくCは大学の授業で触ったなとか、オブジェクト思考は触ってるな、Javaも書いてるし、Cシャープも書いたしなとか、関数型はFシャープちょっとやったなとか、
論理型はプロログちょっとそういえばやったな、大学の授業でって思ってて、
最後データフロー型っていうのが出てきて、データフロー型プログラミング言語ってなんやねんと思ってあのwikipediaを読んでたんですけど、
全然わからなくて、知ってるものがなくてピンとこねえなと思ってて。
なんだ、どこらへんの業界で使われてるやつだ。
いやー、すごいな、7つの世界、7つの言語って本がありますけど、あれ見たら載ってるかな。
いやー多分なかった気がするけど、まあ昔だからなよ。
まあ書かれたのも昔ですしね。あの時のRubyと今のRubyがだいぶ違う気がする。
あ、そうね。
データフロー言ってることはわかるけど、言ってることはわかるけど何言ってるかわかんないですね。
一応ちょっとwikipediaのデータフロープログラミングの一番最初の概要を読むと、
データフローの原理とアーキテクチャに準拠したプログラミングパラダイムであり、
プログラムをオペレーション間のデータフローの有効グラフとして模型化する、またはモデル化するということですね。
データフロー言語は関数型言語の特徴を共有しており、より数値処理に適したものになっているって書いてありますね。
左から右にデータが流れていくようにして、そこに分岐とか処理が入るから、
有効グラフになって矢印付きのある点からある点に移動するっていう状態が変わっていくとかいうことなんだろうなって想像はつくけど、
実際それってどこで使われてるのとか、それをやるのに何て言語でやってるのって言われると、全然知ってるのがなかったんですよね。
知ってるのないですね、ただJavaでフレームワークあるよとかは書いてあるか、
ってことはあれじゃないですか、やっぱり手に馴染んだ言語で実装してみるのがいいんじゃないですか。
確かに。でも今だったら結構、取っ掛かりはAIに任せられるからやりやすそうなんだよな本当に。
作ってみた上で何に使うのかがピンとくるかは別なんですけど。
複数習得すべきですって言って、たぶん一番最初にデータフロー型に手をつける必要は全然ないと思うんですけど、
当時読んだ時はたぶんこんなこと全然気にしてなかったなと思いながら、もう関数型にしか目が行ってなかったなと思いながらこのエッセイちょっと自分で読んでましたね。
プログラミング言語の習得過程
金城さんってどういうような言語を今まで触ってきました?
今までですか、今までは一番最初に触ったのがPythonで、それはGoogle App Engineがただで使えたから。
その次はPHPですね。ワードプレスってPHPですか、別言語ですか?
言語としてはPHPなんで一回PHPとしておきましょう。
ワードプレスかPHP学べきレシピやって、その後JQueryはJavaScriptですか、どっち先やったかな。
JavaScriptとしましょう。
まあやって、その後何やったんだろう。だからすごい一番、だからハスケルを一瞬触ってるかもしれないですけど、タイタニウムJSはJavaScriptですか?
いやなんかドットネットはこれはフレームワークですか、別言語ですかみたいな、なんかそういう世界観ありますよね。
タイタニウムJS、タイタニウムになる前ですね、タイタニウムJSかタイプスクリプトをどっちかをちらっとやってる。
でもそうですね、その後は普通ですよね。タイプスクリプトをちらっとやって、Goをやって、あとKotlinもチュートリアルレベルやったし、
あと転職活動してる時にスキルチェックみたいなのがあるって言ってRubyを半日ぐらいやりましたね。
レッドバインのプラグイン作ってたからもうちょいやってるか。トータル3日ぐらいRubyやってる気がするぐらいですかね、なんかずっとPHPやってんだよな。
あとSwiftか、Swiftもちらっとやってた。
近所さんすごいPHPのイメージがあるから、どんなの触ってきたのかなとか、ちょっと気になったんですよね、読んでて。
ビジュアルベーシックフォーアプリケーションかな、もやりましたね。
なんか懐かしいな。
確かにな、VB.NET 6、確かそういうの触った気がするなとか、今すごいいろいろ思い出しました。
ぐらいかな、あとホットスーププロセッサーか。
それ知らない。
HSP知らないですか。
知らないです。
あれ小学生の時にやりましたよ。
今で言うビスケットみたいなやつ。
ビスケットがわからないかも。
でも本当に学習用言語みたいな、ビジュアルプログラミングとまでは言わないんですけど、
でもかなりGUIというかアイコンを動かすとかに強いんじゃなかったっけな。
ビスケットとかもそういうビジュアルプログラミング、小学生とかが勉強した時に使うっていう感じのやつです。
なるほどな。
今後どうなんですかね。AIが出てきて、別に言語なんでもいいじゃんみたいな。
例えばPHPを詳しくて、PHP実装してこれをラストに変換してって言ったら、数字がいいものは出てくるかどうかは別ですけど、それっぽく動くものは多分出てくるんだろうなとか思ったりしてて。
今後若者とかどうやっていろんな言語を習得するとか、どういう戦略でプログラミング言語を学んでいくんだろうなっていうのはちょっと読みながら考えてましたね。
なんかそう、AIっていうのがもはやLLMベースで色々便利にしてくれるエージェントとニアリーコールになっちゃってると思うんですけど、
AIが本格的に日本のウェブ系のプログラマーでも日常的に使うようになったタイミングで、僕はマネジメントとかも全然やらなくなってたんで、あ、良かった、全く考えなくていいって思ってました。
なるほど 頭が痛い、未経験新卒がジュニアとして入ってきた場合、いやでもいや、会社まで来てくれればもう会社の戦略として使えるようにロム寄りの教育ができるんで、
そうするとね、AIガンガン使いましょうよとか、ID前提でいいし、簡単な構築は俺らが作ったDockerとかMake使ってバンってやればOKだし、
サイクルもしかしたらクラウドベースのエディターを実行監督開発監督かもしれないけど、っていうのがあるから、そこら辺は死なないようにいくらでも背中押せる、生前立てできるから、まあいいのかってなるけど、そうじゃない教育ってなんだ
まあ例えばプログラミングってやつ始めてみたいんですよねってなった時に、昔は多分みんなこうPythonがいいよねとか、なんかこうあれがいいこれがいいって話をしてたけど、なんか変わってくるのかなと思いながら
なんか僕はあれですね、かなり歪んだ生き方をしてるんで、プログラミング始めたいじゃなくて始めてないから始まらないんじゃないのってなっちゃうんですけど、プログラミング始めたいなら始めたいプログラミング言語やればいいになりにいますよね
まあそうですよね 一番原理主義的なことを言うと、始めやすい言語ってなってくると周りにそれを知ってる人がいる言語になるので、例えば僕がそれ聞かれたらPHPとかGoPythonぐらいだったらなんとなく初学者レベルぐらいだったら一応サポートできるよみたいな話するし
こういうことやれるようになりたいなーって言ってたらやっぱりデータフロープログラミング言語はいいよねーかもしれないし、モバイル作りたいだったらもうそれはiOSアンドロイドで動くようなもの一択になるじゃんとか、一択じゃないんですけど2つプラットフォームいってるからになると思うし
難しいですね 独学で始めたいでも何の言語を使えばいいのかわからないどうすればいいですかをAIに聞くんだろうなまず
そうですね、自分だったらAIに聞いてごらんって言うんだろうなーって今会話しながら思ってて、多分スタートは今までともしかしたら変わらなくて選択肢にAIってものが聞く相手が一個増えるっていうのが多分あるのか
で、とりあえず一つものを作るぐらいはやってきて、だんだんだんだん身についてきたけど、なんか違ったことも学びたいんだよねーってなった時になんか自分は昔、じゃなくGoが流行ってるからGoやってみようとか
あと何ですかね、iOSをやるからSwiftをちょっと勉強してみよう、Android触るからKotlin触ってみようみたいな感じはあったけど、なんか今勉強のためにもう一個複数言語を学ぶといいって言われたんでなんか勉強しようと思うんです
でも作りたいものは特にないですって言われた時にどうなるんだろうなーみたいな、いや学ぶ必要ないんじゃねっていう話ともう多分一個選択肢にもあるし
AIとプログラミングの未来
どこまで学ぶかっていう進路がだいぶ変わりますよね
そうですね、そうですね
なんかちらっと動くもの、基本的な文法レベルまではやりましょうが一番曖昧になってる気がする、それも本当に一番手に馴染んでる言語で書かれたソースコードを加わせて
これちょっと○○言語に変換してっていうとできちゃうし、読んでその対応を翻訳される前と原文の対応を自分で取りながらなるほどこうなるのかって納得するまでは行くと思うので
そこのハードルがクソ下がった分そこの次の一歩とのジャップがめっちゃクソでかくなってないみたいな気がする
今までウェブで読んだりとかGitHubで探してきたコードを改編しながら動かすっていう手はあったんですけど
ちょっと勉強しようかなってなるとチュートリアルを○○一個やるか入門書を一冊買って読むかぐらいはしたじゃないですか
やりましたやりました
そこをサボる気がしますよね今
めっちゃわかる
学ぶとは何かみたいな話になってくるんですよ
例えば今からGOやりましょうって言った時に昔だったらじゃあツアーオブGOってやつをまずやるといいよって言われてたけど
あとねレズやるんだったらとりあえずショッピングカート作ろうぜって
そうそうそうだけど今だったらもうもしかしたらいいかもなって思っちゃうんだよな
だいたいこんな感じでしょって思っちゃうしそれは多分経験をちょっと5年前10年前に比べたらもちろん経験値を積んだからっていうのも一個はあるんでしょうけど
なかなか若者にじゃあPHPばっかじゃなくて他の言語をやっておくといいことがあるぞって言うけど
言った時にじゃあ何やったらいいですかねって聞かれると結構難しいなって思っちゃったな
だから翻訳が不可能なそれこそ根本的なパラダイムレベルで違う言語とか
元になる要求とかコードがあってそれ変換してもらった結果確かに動いてるんだけど
全くどういう概念で動いているのかわからんのだよなっていうぐらいの隔離断絶がある世界に
入門した方が良いというかそのぐらいじゃないと特にねある程度2,3年だろうと10年だろうと経験積んだ人はサボるのがうまくなってると思うので
なんかもう一切サボりようがないハッタリが効かないぞっていうぐらい断絶した世界に飛び込む気がする
じゃあやっぱみんなプロログを書こうみたいなでも本当それぐらい全然違うじゃんみたいな
でもそれを学んで何のためになるんですかとかって聞かれ始めたらもううーんってなっちゃうんですよなって気持ちと
そうなんだよね
でもそれ何のためになるかわかんないから勉強するんだよっていうこともあるんだよなみたいな気持ちになりながら難しいなっていう
そうだからけいえんさんがさっき言ってたとりあえず流行ってるっぽいものを一個触ってみるっていうのは割と戦略としてありですよね
けいえん そうですね今だったら多分ラストとかになるのかもしれないけど
自分が普段使ってる言語と比べてどう違うのかどう一緒なのかみたいなことを通して
プログラミングってこういうもんなんだとかある種共通点みたいなところを見つけ出していって抽象化していくと
もしかしたらこういうことってPHPもラストもあってってことはもしかして別の言語もこうなってるんじゃねみたいな
プログラミング言語の多様性
だんだんだん推論ができるようになっていくとかいうと多分サボるのが上手になっていくんだろうなって気がしますね
まあ大事な能力ですからねその推論してサボる そうしないと脳みそなんてすぐやっぱ不足になっちゃう
初見のもの1から10まで知らないと使えませんわ辛いからね
でもそうですね直近でもないかちょっと前の話になっちゃいますけど
PHP界隈で著名なワイタケさんいるじゃないですか竹澤さんがPHPカンファレンスでワークショップやってたりとかその前のペチコーキのあれ発表してたりしてた
アクターモデルっていう考え方というかやつの話をしててあれはすごい面白かったんですよ自分としてはめっちゃ斬新な話だったし
こういうユースケースあるこういう時に確かに今まで苦労してた部分がすごい解消されそうだなっていうイメージも湧きやすかったんで
なんかああいう話は聞くと面白いすごい刺激になるなーっていう気はしましたね
違うパラダイム知るっていうのはやっぱり楽しいなーみたいな
そうっすよねだからもしかしたらなんか最近のプログラミング言語って結構マルチパラダイムなものも多いし
なんかこの本が書かれた当時とか達人プログラマーの書かれた当時とかでいけばプログラミング言語を含むって話だったけど
違うパラダイムを学びましょうがある種本質の方かもしれないなっていうのを今こういろいろ喋りながら思ってて
そうすると多分その言語にこだわる必要はなくてその違うパラダイムの考え方っていうものを手に馴染んだ言語でやってみるとか
いうことが大事なのかなーって思いましたね
だから同じ言語で書かれてるけど違うパラダイムを採用するグレームワークとかでも同じぐらいの効力を発揮するかもしれないし
なんかでもそれでもあれですよね言語違うもの違う言語そのものっていうのを学習することの意義もあるよなって思うのは何だろうな
いい例えがなんか例えばPHP使ってる人がザバのコードを見るとあれクラスの中にクラスがあるぞってすごい混乱を来すわけじゃないですか
ああいう話とかあとライブラリとかコミュニティとかエコシステムこういうところ強いんだなーみたいな何だろう
例えばガイアからRubyを見てるとすごい開発支援系のツールとかテスティングツールとかめっちゃ生えててすごそうだなーって
やっぱり憧れてたわけじゃないですか2010年半ばを生きてた我々としては
めっちゃわかる
アプリケーションはもろPHPで書いてるのになんかデプロイはキャピストラのみたいなやったじゃないですか
レイクタスクとかねありましたね懐かしいな
そういうのとかあるってなるとオブジェクト思考だし動的じゃんっていう話はあるしエレルだよねって話はあるんですけど
文化の違いっていうのもやっぱり言語によって変わってくるのでなんかそういうところを学ぶといいですよね多分
それは本当に輸入するものが多いと思うので
本当そう思う
そうだよなミューテーションテストの筆マークPHPにも欲しくねとかなってくるわけじゃないですか
エコシステムの重要性
わかるわかるめっちゃわかる
そうなんですよねやっぱりそういうところも確かにエコシステム含め学ぶっていうのはやっぱりありますね
自分もさっき他の言語でって言った時に例えばエクセプションがある言語ない言語とかそういうレベルでもやっぱ違いもあるよなとか
継承のアルナスとかねもう名前の短い言語とかでありませんね
そうそうなのでそういうところもあるしやっぱりエコシステム含めという意味ではやっぱり違う言語を触ってみる
PHPでもワードプレスと多分ウェブ系と言われる人たちが作ってるサービスで使ってるPHPは全然違う
ララブリで作ってるアプリケーションは全然違うだろうしとかそういう文化圏の違いみたいなのもあったりしますけど
そうですね
となるといろんなパラダイムいろんな言語いろんなエコシステム合わせていっぱいいろいろ触ってみるしかないんだよな
役に立つかどうかは後で考えようみたいな気持ちになりながら
そうですよね仕事を我々の目線でいう役に立つか
たぶん仕事に使えるかとか趣味開発ではかどるかって話だと思うんですけど
なんかヒートいくレベルさっき言ったねちょっと初めてもう一個ぐらい触ってみたいとかっていうレベルの人にとって役に立つって
なんか定義される価値が違うじゃないですか
プログラミングの基礎能力を上げることの比重が高かったりする
一般登用過程にいるわけじゃないですかまだ
応用とかね実践とか職業訓練的な役に立つっていうのは我々も求めてるけど
なんかそこよりもっと手前の一般登用としてそもそもプログラミングってこういうことやるんだなぁみたいなところの
深掘ったり広げたり的な観点での役に立つっていう軸が入ってくると余計にめんどくさいですね
そうですねいやもう言語とかじゃなくてデータ構造とアルゴリズムを学ぶんやとかね
データベースっていうのもあるから大事だからねとか言ってこうじゃあこのインデックスってものを考え方とか
いやそうあれなんですよねプログラミング言語だけじゃなくてデータベースも複数やった方がいいんだろうなっていう気はしますよね
リレーショナルデータベースとグラフデータベースと文語ですけどドキュメントデータベースぐらいは触ったことあって全然
ファイアベースもあるか全然違うじゃないですか全く通用しない
わかる
というか文語はマイスウェルっぽく使おうとして変になるパターンがよかった気もするし
まあ一昔前で言えば多分こうノーエスケールノットオンリーエスケールっていうものの括りでいろんなものは出てきたし
レディスモンもそうか
そうです確かに最近で言うとニューエスケールみたいな言い方してもっとスケーラブルなデータベースみたいなものとかコックローチとかタイデイビーとか
スパナーとかどんどんどんどんデータ集計用に向いてますとか多分いろいろ出てきてるから
ウェブシステム作るだけだったらマイスケールだけあれば一旦作ればするけど
じゃあスケールアウトしていくとどうするんだっけとかデータベースでも配列を扱いたいってなった時にはポスグレにはそういう考え方があってねとか
いうのが出てきたりするから複数やっぱ学んどくと取れる手が増えていくとか
隣ではどういうことやっててこっちではそれできないから代わりにどうするんだっけとかそういうようなこととかをね
学ぶ必要はあるんですよね
実践的なスキルの向上
ヒントにはなりますよね
データベースマジであれだなプログラミング言語とかフレームワーク以上に必要に迫られないと触りづらいかもな
しかもでかいデータを扱うのが難しいじゃないですかやっぱり
そうなんすよ
映画のあのフリー映画関連のフリーで配られてる情報全部持ってくるかみたいなただ毎回用意されたデータセットを使ったとしてそれをイサートするだけなので
ウェーバーアプリケーションでいうととりあえずクラット作ってみましたみたいなのと変わらんのよなと思って
そういやもうこれねターミナルからコマンドライン一発で全部生成されるやつじゃんけみたいな感じだと
それこそAIにやらせてもらう
そうなんだよな
難しい
確かにこの本データベース系の話があんまりなかったかもしれないですね今喋りながら
DBAが知るべき27のことみたいなのありませんでしたっけ
なるほどそっちを読んでくれっていう感じになるんだな
いやちょっとプログラミング言語だけで結構喋っちゃったけど
確かになんか僕はあれでしたさっき決めたんですけど今年はベーシックをやります
ベーシック
突然
興味が湧いたんで
ちょっとじゃあ年末あたりにベーシックやってどうでしたかって話をするか
してください
いやジャンプっていうのがあってねって
自分内緒かなまあでも今年こそFシャープをもうちょい上げたいなっていう気持ちはあるんだよな
一時エリクサーアーランエリクサーやろうかなって思ってましたけど
すごいなんかこうこの辺の人たちが流行らせようとしてたというか触ってたって言ってるのをなんか2人ぐらい名前思い浮かんだんですけど
じゃあ次いきますか