両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン |
mikanbox:first-step-guide:first_langages [2025/05/18 07:57] – [Lisp] freemikan | mikanbox:first-step-guide:first_langages [2025/07/02 03:46] (現在) – [Python] Fix typo freemikan |
---|
Microsoftは、VBAとVB.NET以外にも[[https://smallbasic-publicwebsite.azurewebsites.net/|Small Basic]]というものも提供しています。これはプログラミングの学習のために利用されることを目的としたものなので、VBAやVB.NETからは失われた、ビギナー向けであるという性質が保たれていることを期待しても良いでしょう。 | Microsoftは、VBAとVB.NET以外にも[[https://smallbasic-publicwebsite.azurewebsites.net/|Small Basic]]というものも提供しています。これはプログラミングの学習のために利用されることを目的としたものなので、VBAやVB.NETからは失われた、ビギナー向けであるという性質が保たれていることを期待しても良いでしょう。 |
| |
[[http://basic.mindteq.com/index.php|BASIC言語の子孫は数多くあります]]。しかし、自由かつ無償で利用できて開発が継続さているものは意外に少ないです。いくつか見つけることができたものを挙げておくと[[https://www.freebasic.net/|FreeBASIC]]、[[https://smallbasic.github.io/|SmallBASIC]]((MicrosoftのSmall Basicとは別物です。))、[[https://gambas.sourceforge.net/en/main.html|Gambas]]、[[http://2484.de/yabasic/|Yabasic]]などがあります。 | BASIC言語の子孫は数多くあります((参考: [[http://basic.mindteq.com]] [[https://github.com/JohnBlood/awesome-basic]]))。 |
| しかし、自由かつ無償で利用できて開発が継続さているものは意外に少ないです。 |
| いくつか見つけることができたものを挙げておくと[[https://www.freebasic.net/|FreeBASIC]]、[[https://smallbasic.github.io/|SmallBASIC]]((MicrosoftのSmall Basicとは別物です。))、[[https://gambaswiki.org/website/en/main.html|Gambas]]、[[https://qb64.com/|QB64]]、[[http://2484.de/yabasic/|Yabasic]]などがあります。 |
| |
BASICのこのような現状を踏まえて、初めて本格的に学ぶ言語に向いているかを検討してみます。 | BASICのこのような現状を踏まえて、初めて本格的に学ぶ言語に向いているかを検討してみます。 |
| |
その他のBASIC子孫の言語は日本語の情報が極端に少ないので、英語に問題がない場合だけの候補となります。 | その他のBASIC子孫の言語は日本語の情報が極端に少ないので、英語に問題がない場合だけの候補となります。 |
| 英語の問題さえクリアーできるなら、それらも決して悪くない選択肢です。 |
| |
===== Lisp ===== | ===== Lisp ===== |
おすすめ度: ⭐⭐☆☆☆ | おすすめ度: ⭐⭐☆☆☆ |
| |
[[wpjp>Lisp]]を最初の言語に選んで上手くやっていける人はかなり限られています。C、BASICときたので、念のためもう一つの歴史を持つプログラミングの系譜として紹介しておきます。LispはCと対極にある言語と言えます。ある角度から見ると、Cはコンピューターの詳細をあまり隠さずに、ハードウェアとソフトウェアの境界に近いところでプログラミングをするスタイルだと言えます。Lispはコンピューターを抽象化してプログラムからはその詳細を意識しないで良いようなスタイル、つまり、高レベルな言語です。Lispは数学的な性質を多く含んでいて、数学のバックグラウンドを持つ人に好まれる傾向があります。数学を専門とする人でプログラミングを初めて学ぶ人、あるいは物理学者やエンジニアなどで日常的に数学を使用する人、俗っぽい仕分け方をすると、大学院より先のクラスで数学を学んできた人などは、まず候補に上がるのではないかと思います。自分がそうでないので本質的なことは分かりませんが、ちょっと無責任になっておすすめしてみます。このように対象を限定するのは、あくまで初めて学ぶ言語として見たときです。別の言語で最低限のプログラミングの基礎を身に付けた後なら、どのような人でも学ぶことができるものであり、むしろ学ぶべきものです。特に、Lispを用いて書かれた非常に有名な本、[[https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html|Structure and Interpretation of Computer Programs]] (通称SICP、Wizard Book)は、なるべく早い段階で読んでおきたいものです((最近この本のJavaScriptで書かれたバージョンが出版されました。なので、SICPを読むという目的のためだけにLispを学ぶ必要はなくなりました))。 | [[wpjp>Lisp]]を最初の言語に選んで上手くやっていける人はかなり限られています。C、BASICときたので、念のためもう一つの歴史を持つプログラミングの系譜として紹介しておきます。LispはCと対極にある言語と言えます。ある角度から見ると、Cはコンピューターの詳細をあまり隠さずに、ハードウェアとソフトウェアの境界に近いところでプログラミングをするスタイルだと言えます。Lispはコンピューターを抽象化してプログラムからはその詳細を意識しないで良いようなスタイル、つまり、高レベルな言語です。Lispは数学的な性質を多く含んでいて、数学のバックグラウンドを持つ人に好まれる傾向があります。数学を専門とする人でプログラミングを初めて学ぶ人、あるいは物理学者やエンジニアなどで日常的に数学を使用する人、俗っぽい仕分け方をすると、大学院より先のクラスで数学を学んできた人などは、まず候補に上がるのではないかと思います。自分がそうでないので本質的なことは分かりませんが、ちょっと無責任になっておすすめしてみます。このように対象を限定するのは、あくまで初めて学ぶ言語として見たときです。別の言語で最低限のプログラミングの基礎を身に付けた後なら、どのような人でも学ぶことができるものであり、むしろ学ぶべきものです。特に、Lispを用いて書かれた非常に有名な本、[[https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html|Structure and Interpretation of Computer Programs]] (通称SICP、あるいはWizard Book)は、なるべく早い段階で読んでおきたいものです((最近この本のJavaScriptで書かれたバージョンが出版されました。なので、SICPを読むという目的のためだけにLispを学ぶ必要はなくなりました))。 |
| |
Lispには数多くの子孫が生み出されました。Lisp界隈では子孫と呼ばずに、方言 (dialects)と呼ばれるのが通例です。特に、[[wpjp>Common_Lisp|Common Lisp]]と[[wpjp>Scheme]]が広く使われています。これらは厳格で近寄りがたい雰囲気を醸し出していますが、[[wpjp>Clojure]]や[[wpjp>Racket]]などはいくらかフレンドリーな雰囲気があります。 | Lispには数多くの子孫が生み出されました。Lisp界隈では子孫と呼ばずに、方言 (dialects)と呼ばれるのが通例です。特に、[[wpjp>Common_Lisp|Common Lisp]]と[[wpjp>Scheme]]が広く使われています。これらは厳格で近寄りがたい雰囲気を醸し出していますが、[[wpjp>Clojure]]や[[wpjp>Racket]]などはいくらかフレンドリーな雰囲気があり、手がつけやすいかと思います。 |
| |
===== C++ ===== | ===== C++ ===== |
[[wpjp>JavaScript]]は主にWebページを制御するために使われてきた言語でした。インターネットが普及してから2000年代初頭まではおまけ程度の扱いでしかありませんでしたが、その後、Webページがインタラクティブな性質を持つように大きく変化してきて、それに伴いJavaScriptの重要性が見直されてきました。今では、インターネットの花形であるWWWの中心に位置するプログラミング言語の位置にまで上り詰めました。Webプログラミングを専門とする人だけでなく、プログラミングを行う全ての人が学ぶべきである必須科目であると言っても良いでしょう。なぜなら、現代でプログラミングをするのならばWebを利用しないことはないであろうからです。Webには興味ないからといって無視するのは賢い選択とは言えません。よほど意識的に回避しない限り、どこかでWebのお世話になっているはずであり、それらの技術について知っておくことは価値があります。 | [[wpjp>JavaScript]]は主にWebページを制御するために使われてきた言語でした。インターネットが普及してから2000年代初頭まではおまけ程度の扱いでしかありませんでしたが、その後、Webページがインタラクティブな性質を持つように大きく変化してきて、それに伴いJavaScriptの重要性が見直されてきました。今では、インターネットの花形であるWWWの中心に位置するプログラミング言語の位置にまで上り詰めました。Webプログラミングを専門とする人だけでなく、プログラミングを行う全ての人が学ぶべきである必須科目であると言っても良いでしょう。なぜなら、現代でプログラミングをするのならばWebを利用しないことはないであろうからです。Webには興味ないからといって無視するのは賢い選択とは言えません。よほど意識的に回避しない限り、どこかでWebのお世話になっているはずであり、それらの技術について知っておくことは価値があります。 |
| |
JavaScriptは実質、Webブラウザが解釈して実行できる唯一のプログラミング言語です。最近人気を集めているTypeScriptは、トランスパイラと呼ばれ、TypeScript言語で書かれたプログラムから、JavaScriptのプログラムを生成します。WebでJavaScript以外の言語を使用したいと言った場合、こういった手法がとられます。最終的にはJavaScriptのプログラムになることから、やはりJavaScriptについて知っていないと難しい状況にあります。 | JavaScriptは実質、Webブラウザが解釈して実行できる唯一のプログラミング言語です。最近人気を集めているTypeScriptは、トランスパイラと呼ばれ、TypeScript言語で書かれたプログラムから、JavaScriptのプログラムを生成します。WebでJavaScript以外の言語を使用したい場合、こういった手法がとられます。最終的にはJavaScriptのプログラムになることから、やはりJavaScriptについて知っていないと難しい状況にあります。 |
| |
JavaScriptはWebブラウザのための言語として登場しました。そのため、JavaScriptを学ぶにはWebブラウザの環境の中でプログラミングをしなければなりませんでした。これはやや特殊なプログラミングスタイルであり、伝統的なものとは違うので、これで本当にプログラミングの基礎が学べるのか疑問なところもありました。Webブラウザの環境でプログラミングを学ぶのが悪いわけではないのですが、VBAのときと同様に、何をしたいかばかりに気を取られて言語の基礎を学ぶことがおろそかになってしまう危険性があります。またJavaScriptだけを学ぶことは不可能であり、HTMLやCSSを同時に学んでいかなければなりません。その結果、本筋からそれてしまうことがあり、人によっては効果的でも楽しくもない体験になる可能性が大いにあります。現在では、Node.jsに代表されるWebブラウザを必要としないJavaScriptの実行環境も普及していて、これらを利用すれば伝統的なスタイルでプログラミングを学習することも出来ます。 | JavaScriptはWebブラウザのための言語として登場しました。そのため、JavaScriptを学ぶにはWebブラウザの環境の中でプログラミングをしなければなりませんでした。これはやや特殊なプログラミングスタイルであり、伝統的なものとは違うので、これで本当にプログラミングの基礎が学べるのか疑問なところもありました。Webブラウザの環境でプログラミングを学ぶのが悪いわけではないのですが、VBAのときと同様に、何をしたいかばかりに気を取られて言語の基礎を学ぶことがおろそかになってしまう危険性があります。またJavaScriptだけを学ぶことは不可能であり、HTMLやCSSを同時に学んでいかなければなりません。その結果、本筋からそれてしまうことがあり、人によっては効果的でも楽しくもない体験になる可能性が大いにあります。現在では、Node.jsに代表されるWebブラウザを必要としないJavaScriptの実行環境も普及していて、これらを利用すれば伝統的なスタイルでプログラミングを学習することも出来ます。 |
おすすめ度: ⭐⭐⭐⭐☆ | おすすめ度: ⭐⭐⭐⭐☆ |
| |
[[wpjp>Python]]は、学びやすさと実用性のバランスの取れた言語です。初期の頃はPerlやRubyと並んで、ちょっとした仕事のために手軽に使える言語のような位置いました。Pythonを含めたこれらの言語はそれぞれの方面で人気を獲得していきました。Pythonは現在、AIプログラミングやデータサイエンスの環境が整備されていて、大々的なプロモーションが行われています。プログラミング教育やAI技術のプロモーションと並行して行われていることもあり、今までプログラミングとはおおよそ無縁のところにいた人たちを多くを巻き込んで、新たなユーザーを獲得することに成功しています。Pythonは学びやすい言語であることから、かつてJavaとオブジェクト指向の流布のために行われた大々的なプロモーションのときのようには混乱と破滅をもたらすものとはなっていないようで、必ずしも悪い傾向であるとは言えないです。しかし、こうした異様なまでにもてはやされている言語には何か裏があると勘ぐるのは自然なことです。初めて本格的に学ぶ言語にPythonを選択した場合は、現状、そういう状況にあることを認識しておくことは必要です。先に述べた認識は、私個人の主観的なものです。まず、自分自身で情報収集をして、流行にのるべきなのか別の言語を選択したほうが良いのかを判断する必要があります。流行中の言語は不必要に多くの情報がインターネット上を中心に飛び交います。これが良いことなのか悪いことなのかは人によります。情報が少なすぎたらそれもまた大変な問題です。しかし、どうしても学習中に集中力を乱されることは避けることが出来ません。 | [[wpjp>Python]]は、学びやすさと実用性のバランスの取れた言語です。初期の頃はPerlやRubyと並んで、ちょっとした仕事のために手軽に使える言語のような位置にいました。Pythonを含めたこれらの言語はそれぞれの方面で人気を獲得していきました。Pythonは現在、AIプログラミングやデータサイエンスの環境が整備されていて、大々的なプロモーションが行われています。プログラミング教育やAI技術のプロモーションと並行して行われていることもあり、今までプログラミングとはおおよそ無縁のところにいた人たちを多くを巻き込んで、新たなユーザーを獲得することに成功しています。Pythonは学びやすい言語であることから、かつてJavaとオブジェクト指向の流布のために行われた大々的なプロモーションのときのようには混乱と破滅をもたらすものとはなっていないようで、必ずしも悪い傾向であるとは言えないです。しかし、こうした異様なまでにもてはやされている言語には何か裏があると勘ぐるのは自然なことです。初めて本格的に学ぶ言語にPythonを選択した場合は、現状、そういう状況にあることを認識しておくことは必要です。先に述べた認識は、私個人の主観的なものです。まず、自分自身で情報収集をして、流行にのるべきなのか別の言語を選択したほうが良いのかを判断する必要があります。流行中の言語は不必要に多くの情報がインターネット上を中心に飛び交います。これが良いことなのか悪いことなのかは人によります。情報が少なすぎたらそれもまた大変な問題です。しかし、どうしても学習中に集中力を乱されることは避けることが出来ません。 |
| |
以上は、Pythonを選択してもよいかどうかの唯一の懸念材料です。Python自体は初めて学ぶのに決して悪くない言語です。流行を過剰に警戒して、Pythonを選択肢から外してしまうのは慎重すぎると言わざるを得ません。AIプログラミングやデータサイエンスを本当に学びたいと思っているのならば、まず候補にあがります。それ以外の領域であってもそつなく仕事こなせます。Pythonのクリーンな性質は、言語の詳細を学ぶために費やす時間を減らしてくれて、より高度なプログラミングの概念や技術を学ぶためにその時間をまわすことが出来ます。このことを考えると、原因と結果を逆にみることができます。つまり、Pythonが学びやすい言語であるからこそ流行しているということです。 | 以上は、Pythonを選択してもよいかどうかの唯一の懸念材料です。Python自体は初めて学ぶのに決して悪くない言語です。流行を過剰に警戒して、Pythonを選択肢から外してしまうのは慎重すぎると言わざるを得ません。AIプログラミングやデータサイエンスを本当に学びたいと思っているのならば、まず候補にあがります。それ以外の領域であってもそつなく仕事こなせます。Pythonのクリーンな性質は、言語の詳細を学ぶために費やす時間を減らしてくれて、より高度なプログラミングの概念や技術を学ぶためにその時間をまわすことが出来ます。このことを考えると、原因と結果を逆にみることができます。つまり、Pythonが学びやすい言語であるからこそ流行しているということです。 |
===== Ruby ===== | ===== Ruby ===== |
| |
===== Rust ===== | おすすめ度: ⭐⭐⭐⭐⭐ |
| |
===== JVM言語 ===== | |
| |
===== C# ===== | |
| |
===== Go ===== | [[wpjp>Ruby]]はとても学びやすい言語です。 |
| PythonとRubyの立ち位置はよく似ていて、かつ学習コストは同じくらいです。 |
| PythonとRubyを比較すると、Rubyのオブジェクト指向プログラミングのサポートが優れている点が光ります。 |
| それどころか、他のどの言語と比べてもRubyのオブジェクト指向プログラミングは洗練されています。 |
| しかし、裏を返せばオブジェクト指向プログラミングを強制されてしまうという悪い捉え方もできてしまいます。 |
| 熱心なRubyユーザーに言わせれば、Rubyはそのような強制はしないし、オブジェクト指向プログラミングに頼らないプログラミングにも問題ないでしょう。 |
| |
===== Lua ===== | Rubyを取り巻く状況はとても良いです。 |
| 決してマイナーということはなく、かつ過剰にもてはやされていることもありません。 |
| 学習に必要な情報は過不足なく入手できることが期待できるでしょう。 |
| まったく見つからないということないし、Pythonみたいにゴミ情報にあふれていることもありません。 |
| 15年程度前には、Ruby on RailsというWebフレームワークの大ブレイクにより現状のPythonのように馬鹿みたいもてはやされていた時期がありました。 |
| それも落ち着いて、今やそれほど警戒せずに安心して学習することができるようになっています。 |
| これはPythonに対する明らかなRubyのアドバンテージです。 |
| Pythonの過熱ぶりに警戒している人、かつ、オブジェクト指向プログラミングが嫌ではない人にとって、とても良い選択肢となることでしょう。 |
| |