はてなキーワード: typescriptとは
プログラミング未経験者から「プログラミングを勉強してみたい、でもどのプログラミング言語をやればいいのかわからない」というような悩みを聞くことがあるので、https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/ に載っている人気の言語TOP 20について、未経験者が最初に学ぶのはどの言語が良いかという観点で簡単に解説してみます。
対象読者はプログラミング未経験者なので、なるべく難しい言葉を使わないようにしたつもりです。また、正確性よりもわかりやすさを重視しているので何かしら間違っているかもしれません。ご留意ください。
Webブラウザの上で動くプログラミング言語。元々ただの文書しかなかったインターネットの世界に、グリグリ動くページを作りたいという欲求により生まれた。JavaScriptのおかげで今のWebページはグリグリ動きまくりである。
元々HTMLをちょちょっといじる為だけのものだったが、どんどん進化を続けて今は一つの超人気プログラミング言語である。今ではブラウザ上でなくても普通に動かせる(Node.jsという)ので様々な用途で使われている。
ブラウザ上で動くプログラミング言語は基本的にJavaScriptしかないので、JavaScriptはすべてのWebプログラマが学ぶ必要があると言っても過言ではない。
ちょっとしたプログラムを書いてすぐブラウザ上で動かせるので楽しい。そういう点ではプログラミング入門に適していると言えるかもしれない。
機械学習を始めとしたデータサイエンスの分野で激烈に人気のある言語。理由としてはNumPyとかTensorFlowのようなライブラリが充実しているというのが大きく、資産がたくさんあるのでこれからも使われ続けるであろう。
言語としては、誰が書いても簡潔で読みやすいコードになる傾向にあり、小さいプログラムを書くにはいい感じである。米国ではプログラミング教育にPythonがよく使われているという話も聞くし、初心者がプログラミングを始めるのにはいいのかもしれない。
将来AIやデータサイエンスをやってみたいと思うのであればPythonから始めましょう。
ランキングでは常に一位に近い順位をつける言語。Javaができた当時は色々と革新的だったらしく、組み込み業界からWebまで流行りまくっていた。今でもその名残か使っているところは多い。過去の資産やプログラマの数が多いのが一番の理由だと思う。AndroidアプリもJavaで書く(もしくはKotlin)。
実行速度が速く、また下位互換性がしっかりしているので過去に書かれたコードが新しいマシン上でも動きやすいのが長所。短所としては、歴史ある言語で下位互換性を保っているため文法が古い感じがする。タイプ量も多くなるし、学習コストはJavaScriptやPHP, Ruby, Pythonあたりに比べると高い。
正しく使えば強力な言語だが、日本のクソSEもどきは全員(自称)JavaエンジニアであることがJavaが毛嫌いされる理由の一つになっている[要出典]。いわゆるGAFAもJavaをかなりヘビーに使っているので要は玉石混交ということである。
Androidアプリを作ってみたいというならJavaからはじめるのはアリ。
Webページを作るためだけに生み出された言語。プログラマの数が非常に多い。日本で求人が一番多いのはJavaかPHPであろう。
初心者でもとっつきやすく、すぐに動くプログラムを作れるので入門に使われることも多い。学習コストの低さはトップレベルである。しかし基本的には古くてダメな言語とみなされており、PHPで作られたWebサービスは脆弱性が多いという都市伝説もある。真実は闇の中である。
近年のバージョンアップで比較的良い方向に向かっている(と個人的には思う)ので、選択肢としては意外と悪くないかもしれない。
Microsoftが生み出した言語で、.NETというプラットフォームを使ってWebサービスを、Unityというゲームエンジンを使ってゲームを作ることができる。
最近有名なのはUnityで、今やほとんどの3Dソーシャルゲーム(の一部分)はUnityで作られている。そう考えるとC#のプログラマは結構いそうだし将来もある程度安泰かもしれない。もちろん.NETも広く使われている。
ただし.NETもUnityも触らない人にとっては基本的に縁のない言語である。
なんかゲーム作ってみたいかもなーと思う人はC#から始めてもいいんじゃないでしょうか。
C言語に色々な機能を足しまくってできた巨大な迷宮のような言語。言語仕様は複雑怪奇だが実行速度は全プログラミング言語中でも最速レベルなので、パフォーマンスが重要な開発において使われる。アプリやサービスというよりは、それらを作るためのライブラリ、プラットフォームなどを作るときに使われることが多い。Web系の会社でいうとGoogleなどは主にC++を使っている。
基本的には初心者が触る必要はない。競技プログラミングを極めたいとかならC++からはじめてもいいかもしれない。
このランキングの中で唯一、日本人によって作られた言語。作者のまつもとさんは世界的有名人である。ちなみに島根県出身、在住。
プログラミングを楽しくすることがモットーらしく、確かに書き味は良い。また作者が日本人なこともあってか日本語情報が多く、情報収集という点ではとてもやりやすい。
Ruby on RailsというWebサービスを作るためのフレームワークが世界的に大ヒットしたため、必然的にRubyの知名度も上昇した。少し前まで日本のWeb系スタートアップは猫も杓子もRuby on Railsといった様相であった。今は少し落ち着いたようだが今も人気は根強く、Web系プログラミングスクール等ではだいたいRuby on Railsを教えているとかいないとか。
Webに興味があるのならRubyから始めるのが一番無難な選択肢と言える…のか?まあ悪くはないと思う。今でも需要は多い。スクールに行きたいのであれば黙ってスクールのカリキュラムに従いRailsをやりましょう。
これは他の言語とは毛色の違う言語である。というかCSSはプログラミング言語と呼んでいいのだろうか?
CSSはHTMLを装飾するためのものである。字に色をつけたり、背景を変えたり、レイアウトやサイズを変えたりするのは基本的にCSSの役割である。
すごく大雑把にいうと、HTMLで表示する内容(文章や画像)を定義し、CSSでその見た目を整え、JavaScriptで動きをつける。というのがWebサービスの”見た目”を作るやり方である。
なので、Webに興味があるのであればある程度はCSSの知識が必要である。が、これ単独で学ぶようなものではない。Webサービスを作る時についでに調べて少しずつ覚えていけば良い。
TypeScriptは比較的新しい言語で、JavaScriptをさらに拡張したものである。Microsoftによって開発されている。
プログラムにはデータの型(Type)というものがある。例えば「1」や「2」は数値型、「あいうえお」は文字列型といった具合である。大まかに言うと、この「型」に対して厳しい言語は型チェックによりバグの混入を防ぎやすいがプログラムを書くのが大変、というかコード量が多くなる。型が緩い言語はサクサクかけるし短く書けるがバグを生みやすくプログラマの力量が問われる。ランキングの中だとJavaScript, Python, PHP, Ruby, Perlあたりは緩く、Java, C++, C, Swift, Go, Kotlinあたりは厳しい。
そんな中、世で広く使われているJavaScriptの型チェックが緩すぎるのでもっとちゃんと型をつけたい、そんな要望を叶えるのがTypeScriptである。基本的にJavaScriptを理解している人間が使うべき上級者向け言語というのが現状なので、初心者が始めるには適していない。
ただしこの先主流になっていく可能性は大いにあるので、どこかのタイミングで勉強してみても損はしないと思う。
C言語は基本的にOSを作るための言語である。OSというのはWindowsとかmacOSとかLinuxといったもので、マシンを動かすための基盤となるソフトウェアである。AndroidスマホにはAndroid(という名のOS), iPhoneにはiOSが載っている。コンピュータは基本的にOSがあって初めて動かすことができ、OSが提供する機能を使ってブラウザやスマホアプリなどを動かせるのである。
というわけで、初心者が学んで実用的なものではない。ただしC言語というのは世の中の様々なものの基盤になっており、他言語の文法もC言語から拝借しているものが多い。例えばC言語をある程度勉強していればJavaやPHPなどはなんとなく雰囲気で書けてしまったりする。
そういうわけで、コンピュータサイエンスをこれからちゃんと学んでいきたいという人(大学生とか)はC言語から始めるのもいいと思う。ちなみに筆者は初めて書いた言語はCであるが、意味が理解できるまでに2年かかった。才能がないとこうなるので注意。
SwiftはAppleによって作られたAppleのための言語である。iOSアプリ(iPhoneアプリと言い換えても良い)を作るためだけに存在している。
言語自体は他と比べて新しいため文法や機能がイケてる雰囲気があるので基本的にはいいのだが、iOSアプリ以外で使っている人は多分世界で5人くらいしかいないと思う。なのでiOSアプリに興味がない人はやめておきましょう。iOSアプリを作りたいあなたは他に選択肢はない。Swiftをやりなさい。
Swiftが生まれる前はiOSアプリを書くためにObjective-Cが必要だったため、多くの人がこの言語を使っていた。が、今はSwiftがあるので、古くからあるObjective-C製アプリをメンテナンスする時以外に使う機会はない。名前すら覚える必要がないので存在を忘れてしまって構わないが、これだけ順位が高いということは多くの企業がいまだにObjective-Cで開発し続けているということであり、ニッチな需要はこれからも残るのかもしれない。
Scalaは関数型言語と呼ばれる言語の一つ。Javaの親戚みたいなものなのでJavaとの連携が容易であり、上手く使えば性能も出るしコード量も少ないしバグも少なくて最高、な感じらしい。が、その分難易度が非常に高いので初心者が手を出すものでは絶対にない。どんなに早くても他に二つは言語を覚えてから勉強しましょう。Javaを覚えてからやるのがベター。
正直ほとんど書いたことがないのでよくわからないが、ビッグデータというワードが流行りだした頃はデータ解析用途でかなり流行っていた。その後機械学習やAIブームが来て、今でも現役で使われてはいるがPythonがどんどん勢力を拡大しているので少し目立たなくなってきた、というのが個人的な印象である。まあプログラミング初心者が最初にやるようなものではないことだけは確かである。
Go言語は比較的新しいGoogle製のプログラミング言語で、Googleのように巨大なシステムでの使用を目的に作られたものである。しかし実際には様々な企業が利用しており今一番勢いのある言語と言ってもかもしれない。
他のプログラミング言語の良い点や悪い点を参考に設計されており、実行速度の速さと生産性(プログラムの書きやすさ、読みやすさ)を両立できるような言語になっている。ただし、機能を増やすのではなく本当に重要な機能だけに絞るという思想があるようで、他の言語に慣れていると機能の少なさに不便を感じるかもしれない。
学習コストが低いという点では最初に学ぶ言語として適しているかもしれないが、GoだけでWebサービス等をサクッと作れるのかというと微妙なので、アウトプットを出しにくいというのはあるかもしれない。
シェルというのはテレビなんかでハッカー的な人間がPCを開いて謎の黒い画面に白い文字を打ち込んだりするアレである。説明としては正確ではないがまあ大体そんなもんである。何が言いたいかというと初心者が最初に学ぶとかそういうものではない。しかし実際に開発の仕事をやるとシェルの知識はあったほうがいいし、シェルに多少詳しくなるとPC上でテキスト操作をしたりファイルをいじったりというのが便利にできるようになる。ただし(通常は)極める必要はない。
Shellと言っても実際にはbash, csh, tcsh, zshなど色々あるのだがそれらをひとまとめにしてShellとなっているようだ。
PowerShellは上のShellの親戚みたいなもので、ShellがMacやLinuxで動くのに対しPowerShellはWindowsで動く。そんだけである。あと正直あまり知らない。
ランキングの中ではかなり昔からある言語で、サーバーと呼ばれるマシンには大体Perlが入っている。そのくらい市民権を得た超有名言語で、C言語やC++で書くほどでもない小さなプログラムはとりあえずPerlで書く、というくらいには広く使われていた。インターネット初期はほとんどのWebサイトはPerlで書かれていたとかいないとか。PHPなどの登場はその後である。
今でも広く使われてはいるが、RubyやPythonがPerlの後継的な位置付けであるため、初心者が新しくPerlを学ぶメリットというのはあまり思い浮かばない。何か特定の目的があるのであればいいと思う。
Kotlinは簡単に言えばBetter Javaである。Javaをもうちょっといい感じに書きたいという気持ちで作られた言語で、Scalaと同じくJavaの親戚のようなものである。
ランキングの中ではSwiftと並んでかなり新しい部類。AndroidアプリをKotlinで書けるようになったことがきっかけで人気が爆発的に上昇、今ではWebの開発にも使われていたりする。
とは言えまだまだ新参者といった感じで、ドキュメントなどの情報も他の言語に比べると物足りないので初心者には厳しいかもしれない。
言語自体はとてもいい感じなので、もう少しコミュニティが成熟してくれば最初に学ぶ言語の選択肢として有力になるかもしれない。
HaskellはScalaと同じく関数型言語である。ScalaがJava的な書き方でも動くの対し、Haskellは「純粋関数型言語」と呼ばれ、ランキング中の他の言語とは一線を画した書き方になる。どう考えても初心者にはオススメしない。少なくとも他に二つは言語をマスターしてからやりましょう。
なんとなくWebに興味がありそうならJavaScriptかRubyもしくはPHP、Androidアプリに興味があればJava、iPhoneアプリに興味があればSwift、AIやデータ分析に興味があればPython、3Dゲーム開発に興味があればC#。この辺りをやりましょう。
特に目的がないのであればフィーリングで選んで大丈夫ですが、やめておくべき言語というのはあるのでその辺だけ参考にしてもらえれば。
なお筆者はただのヘボプログラマであり、大好きな記事(http://www.mwsoft.jp/column/program_top10.html) の現代版かつより初心者向けなものを書いてみたいと思ってこの記事を書きなぐった次第である。あまり真に受けないよーに。
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
202あとで/2672users ブログ: 「平常に戻る」ことはない - イギリスNESTA(科学技術芸術国家基金)より | okuranagaimo.blogspot.com
144あとで/741users 電子情報学特論:Chromiumのアーキテクチャを解き明かす - Google スライド
142あとで/2292users 0403「NY感染体験記(未確定)」|qanta|note
132あとで/1569users イラスト図解! これが新型コロナウイルス(SARS-CoV-2)だ|ぬまがさワタリ|note
124あとで/1229users [PDF]COVID-19への対策の概念 | 東北大学大学院医学系研究科・押谷仁
116あとで/578users API 設計ガイド | Cloud API | Google Cloud
116あとで/1677users 緊急事態宣言から3週間 流行状況はどう変わったか(忽那賢志) - 個人 - Yahoo!ニュース
114あとで/911users 米ジャズプレーヤーが解き明かす“J-POP”の正体、音楽的アイデンティティ(KAI-YOU Premium)
114あとで/609users Google Cloud Platform のトレーニングコース、ハンズオンを 1 か月間無料で提供 | Google Cloud Blog
111あとで/506users ドキュメント作成スキル向上を目指す人向けおすすめ記事まとめ - Qiita
106あとで/970users 月例マグコミマンガ大賞2020 - マッグガーデン / 2月期 入選「賢者の教室」朝野茶柱 | MAGCOMI
104あとで/668users 論文の読み方 / How to survey - Speaker Deck
103あとで/617users SPAのログイン認証のベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 - Qiita
102あとで/452users Git / GitHub を使用したチーム開発時のガイドラインを制定しました | Developers.IO
102あとで/1032users 「日本人は幻想を抱く」新型コロナと闘うウイルス学者の『情熱大陸』のドキュメントがすごい!(追記あり)(水島宏明) - 個人 - Yahoo!ニュース
100あとで/549users Mr. ベイエリア on Twitter: "自分は機械学習を学びたい全ての人類に(CourseraのAndrew Ngのコースをやった後に)Andrew NgのStanfordのCS229の講義を見ることをオススメしてるんですけど、その講義の2018年度バージョンが公開され… https://t.co/OUokFft3ea"
97あとで/600users 自宅で学ぼう!AWS 初学者向けの勉強方法 6ステップ! | Amazon Web Services ブログ
96あとで/435users 文字コード再入門 ─ Unicodeでのサロゲートペア、結合文字、正規化、書記素クラスタを理解しよう! - エンジニアHub|若手Webエンジニアのキャリアを考える!
95あとで/406users “アカウント作成後すぐやるセキュリティ対策” 編を公開しました!- Monthly AWS Hands-on for Beginners 2020年4月号 | Amazon Web Services ブログ
94あとで/538users 大幅にリニューアルされた Next.js のチュートリアルをどこよりも早く全編和訳しました - Qiita
94あとで/1004users 「一生役に立つ」人に質問するときに覚えておきたい…とある大学の授業で配られた『質問の仕方』のスライド - Togetter
93あとで/1447users ヨーロッパでコロナに感染して入院した話 - にゃんぶろ
93あとで/782users これからは「一番最初に思い出してもらえるブランド」しか生き残れない|池田紀行@トライバル|note
92あとで/2071users 一人暮らしで新型コロナウイルスにかかった話|RO|note
88あとで/794users 見ずして死ねない日本の伝統建築10選
87あとで/1317users リモートワークが 超快適になる製品9選 〜仕事に本気なあなたに〜|村上僚|note
86あとで/425users 「AIをどう習得したのか教えて」と大募集し、技術者から集まった記事49本を紹介 - 週末スペシャル:日経クロステック Active
86あとで/809users API 設計: gRPC、OpenAPI、REST の概要と、それらを使用するタイミングを理解する | Google Cloud Blog
86あとで/778users Gitでよく使用するコマンドをGIFアニメで解説 | コリス
85あとで/395users TypeScript 練習問題集 · GitHub
.vueはコンポーネントで振り分けちゃえばスッキリしてて好きだけどなstyleのスコープが謎のときあるけど
デコレーターなんて、言ってしまえばGotoみたいなもんやんけTypeScriptなんて型指定以外いらんわとおもう3ヶ月めの初学者であった
TypeScriptって煽り抜きでどこで使われてるの。まさかJavaScriptにコンパイルして使うなんて言うなよな
それはある
Unreal Engineで使われるC++もJavaのパクりだし
TypeScriptやEcmaScriptもJavaのパクりだから
とりあえずJavaやっとけばいいよ
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
234あとで/1602users CTOの頭の中:技術を財務で表現する|Shin Takeuchi|note
225あとで/2454users Kyoto University Research Information Repository: プログラミング演習 Python 2019
219あとで/2206users 意識の低いフリーランスの生存戦略
160あとで/762users TCP/IPをわかりやすく - 通信プロトコルの基礎知識を図解で学ぼう - エンジニアHub|若手Webエンジニアのキャリアを考える!
160あとで/933users 京都大学、Pythonによるプログラミング演習教材を無料公開:CodeZine(コードジン)
152あとで/1272users セキュリティエンジニアになり、そこから2年間分の勉強内容と参考になった資料とか - ぶるーたるごぶりん
142あとで/1054users コンピュータサイエンスが気になるプログラマに勧める書籍リスト - Rubyist Magazine 第61号 巻頭言
140あとで/731users 【社内資料公開】AWSに関するスキルアップ方法と一度は読むべきブログの紹介 | Developers.IO
138あとで/2534users 【書き起こし】岩田健太郎さんのYouTube動画「ダイヤモンド・プリンセスはCOVID-19製造機。なぜ船に入って一日で追い出されたのか。」の書き起こし
131あとで/1507users 牧歌的 Cookie の終焉 | blog.jxck.io
120あとで/587users TypeScriptをプロダクト開発に使う上でのベストプラクティスと心得 - Qiita
118あとで/667users プログラムの可読性を上げるための条件分岐を減らす方法7個 - Qiita
117あとで/1454users 米津玄師さんの曲はどれも心に残り、独特に感じます。パプリカは子どもたちも大好きです。曲なのかメロディなのか詩なのかリズムなのか、技巧として他のアーティストと異なる特筆する点があるのでしょうか?に対するNobuhiko Izumiさんの回答 - Quora
113あとで/626users エンジニア歴17年の俺が、事業系の開発タスクをバンバン投げてくる非エンジニアに、保守の必要性を死ぬほど分かりやすく説明する。|みやたけ|note
112あとで/1174users 銀座・有楽町周辺で800回ランチした私のおすすめランチ!|takehiro sugaya|note
108あとで/900users Excel設計書を抹殺したくて4年前にWiki設計書を導入したら、意外とちゃんと開発回ってた話。 - Qiita
104あとで/1175users 『ヤバい本が出ようとしている』みずほ銀行のシステム統合の歴史を綴った本が出版される模様「最恐のホラー小説」「章題を見るだけで闇を感じる」 - Togetter
103あとで/1072users 「相当まともな文章を書いてきますよ」関西大学のゼミで配布されている『レポート・論文の基礎ルール』が本当に大切なことばかり - Togetter
101あとで/453users 大規模システムでの Linux のメモリ管理
101あとで/1172users 村井純教授の1月16日最終講義全文書き起こし – Matsubo engineering blog
100あとで/1379users 【鬼滅の刃】恋柱に注目するなら乳だけでなく下半身も見ろ - 本しゃぶり
98あとで/605users 質とスピード(2020春版) / Quality and Speed 2020 Spring Edition - Speaker Deck
97あとで/1572users EM菌の正体(構成微生物を調べました)|片瀬久美子|note
96あとで/446users 仮想DOMは本当に“速い”のか? DOM操作の新しい考え方を、フレームワークを実装して理解しよう - エンジニアHub|若手Webエンジニアのキャリアを考える!
95あとで/527users JavaScriptの次の仕様ES2020で追加されることが決定した新機能まとめ - ICS MEDIA
93あとで/847users ふなっしーを最近テレビで見ない理由、「本人」ロングインタビュー(上) | News&Analysis | ダイヤモンド・オンライン
93あとで/531users 「AIをどう習得したのか教えて」と大募集し、技術者から集まった記事49本を紹介 | 日経クロステック(xTECH)
92あとで/793users 中国AI企業が開発した中国語学習サイトが凄い|ばやし@イマチュウ|note
92あとで/1452users 鉄のフライパンの再生とメンテナンス|樋口直哉(TravelingFoodLab.)|note
92あとで/1575users 書いたな、俺の前で、革靴の話題を!
92あとで/797users ls よりも exa を使おう!モダンな Linux コマンド達を紹介 - Qiita
いつもの月に比べてあとで読むタグが少ない。あとで読みたくなるような記事が少なかったのか、あとで読むを付けるタイプの人が寄り付かなくなったのか。
このプログラミング言語はMtGだと多分この色の組み合わせだろう。
みたいなのをまとめたら次のようになった(TIOBEのランキング順トップ50)。
後半は知らない言語もあって怪しいが、おおよそこのようになると思われる。
※改めて見てみると何箇所か違和感があったので最初の版からちょっとだけ修正した。
順位 | プログラミング言語 | 色の組み合わせ | 内訳 |
---|---|---|---|
1 | Java | アブザン | 白黒緑 |
2 | C | ゴルガリ | 黒緑 |
3 | Python | ティムール | 緑青赤 |
4 | C++ | ジャンド | 黒赤緑 |
5 | C# | バント | 緑白青 |
6 | Visual Basic .NET | セレズニア | 緑白 |
7 | JavaScript | ボロス | 赤白 |
8 | PHP | グルール | 赤緑 |
9 | SQL | 無色 | |
10 | Swift | 4C(緑欠色) | 白青黒赤 |
11 | Go | ゴルガリ | 黒緑 |
12 | Assembly language | 黒単 | 黒 |
13 | R | イゼット | 青赤 |
14 | D | グリクシス | 青黒赤 |
15 | Ruby | 赤単 | 赤 |
16 | MATLAB | イゼット | 青赤 |
17 | PL/SQL | 無色 | |
18 | Delphi/Object Pascal | アゾリウス | 白青 |
19 | Perl | ラクドス | 黒赤 |
20 | Objective-C | エスパー | 白青黒 |
21 | SAS | アゾリウス | 白青 |
22 | Visual Basic | 緑単 | 緑 |
23 | Dart | ジェスカイ | 青赤白 |
24 | Scratch | 白単 | 白 |
25 | Scala | 5C | 白青黒赤緑 |
26 | Groovy | ナヤ | 赤緑白 |
27 | Transact-SQL | 無色 | |
28 | F# | アゾリウス | 白青 |
29 | Rust | マルドゥ | 赤白黒 |
30 | COBOL | オルゾフ | 白黒 |
31 | ABAP | アゾリウス | 白青 |
32 | Lisp | シミック | 緑青 |
33 | Kotlin | 4C(緑欠色) | 白青黒赤 |
34 | Logo | 白単 | 白 |
35 | RPG | ディミーア | 青黒 |
36 | Lua | 緑単 | 緑 |
37 | Fortran | スゥルタイ | 黒緑青 |
38 | PowerShell | ジェスカイ | 青赤白 |
39 | Ada | ディミーア | 青黒 |
40 | LabVIEW | ディミーア | 青黒 |
41 | Erlang | 緑単 | 緑 |
42 | Julia | イゼット | 青赤 |
43 | ML | 青単 | 青 |
44 | Scheme | シミック | 緑青 |
45 | Haskell | エスパー | 白青黒 |
46 | TypeScript | ジェスカイ | 青赤白 |
47 | OpenEdge ABL | アゾリウス | 白青 |
48 | LiveCode | アゾリウス | 白青 |
49 | PostScript | 無色 | |
50 | ActionScript | ジェスカイ | 青赤白 |
見返してみるとおおよそ次のルールに従って決めているような気がした。
緑の判定があやふやな気が若干しないでもない…
色 | イメージ |
---|---|
白 | 高レイヤ、初心者向け |
青 | 浮世離れ、ベンダー |
黒 | 低レイヤ、黒魔術 |
赤 | 速い、先進的 |
緑 | 基盤、グルー |
無色 | 道具 |
まつほろひとゆきが作った日本産のコンピューター言語。パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的なWebフレームワークはtDiary
C
デニス立地さんがNTTで開発した言語。マルチクスというOSを作成するために作られた。わざと複雑な言語仕様にすることで自分の役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミのゲーム制作にさえ使えなほどの超高級言語
おまじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様に曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境で動作しないなど)
オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。
主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。
代表作はOpenGL、DirectX、Window10、LibreOffice など
JavaScriptから派生した言語。読み方は(ジャワ。ジャワ島のジャワ。)。もともとはOracleの創始者の博士が趣味で作成して、現在のOracleデータベースの基礎となるテクノロジー。アプレットという実行するための専用プログラムをインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークはコーヒーだと思われがちだが、紅茶(ジャワティー)である。
アンドロイドOSを作成するためにも使われており、アンドロイドのOSカーネルはJavaで制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。
対策するためにはGC戦略を見直してヒープ領域のサイズやメモリに乗せるキャッシュのサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。
このように業務用データベースから携帯電話まで幅広く使われているので、Javaの技術があっても市場価値は殆どないと言われている。(みんな使えて当たり前)
晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーションを作成するために使われている。PはパナソニックのP。を略してPHP
かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバルで評価できたりするなど、洗練されていてとても便利な言語である。
HTMLやメール本文の中にもPHPの処理を書き込むことができる。
この世のすべてのサーバーに実行環境が存在するので、PHPのコードさえあれば、コンパイルも不要でどのような環境でも動作する。
C言語の100倍生産性が高く、Wikipedia、Facebook、Slackなどの超一流のサイトやサービスで大量のアクセスを捌いている。
WardPressと呼ばれるフレームワーク(全世界のWebサイトの3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWebは存在していない。
データベースとも親和性がある、などと言われることもあるが特に根拠はない。
韓国人棋士を倒したAIに特化したプログラム言語。Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在はDartという言語は存在していない。
AIに特化しているというだけあり、低レイヤむけの実行ファイルを作成する必要があるため、コンパイルが必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。
デフォルトでディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。
JavaScript
Javaの元になったプロトタイプベースのオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブにWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。
それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。
並列プログラミングが不可能な作りのため、コールバックを多用して、スパゲッティーコードを量産することができる。
NPMを使う奴らは、JSがブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。
Javaと同じくJavaScriptから派生した言語。Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。
$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。
JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである。
jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である。
JavaやjQueryなどと同じくJavaScriptから派生した言語。Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。
型に特化した言語であり、Microsoft製のVSCodeというIDE環境でしか開発、実行が出来ない。(ただしMacやLinux上でも動作可能)
TypeScriptを動かすにはサーバーにVSCodeもインストールする必要があり、言語やIDEのバージョンアップも多いため、メンテナスンスが困難である。
前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSのメンテナンスもままならない、という理由で最初のバージョンがわずか14日間で作られた言語。
TypeScriptで出力したJSは、MS系ブラウザしかサポートしない、という未来は十分に予測できる。
それにどういう方針でbetter JSを作ろうとしたのか不明だが
const color = switch (input) { case 1 => 'red' case 2 => 'blue' default => 'green' }
こんな具合の「値を返すswitch」のような文法拡張すら実現できていない。
技術力が窺い知れる。
素直にtypescript使っとけばいいんじゃないのか?
みなさん、こんばんは。
「Merpaku Frontend Engineer Meetup」の時間がやってまいりました。
今夜は、著名フロントエンドエンジニアの方々にお集まりいただき、「2020年のフロントエンドJSフレームワークを考える」と題しまして、お話をお伺いいたします。
ま~、僕の場合はね、海外の技術情報をチェックしてるんだけど~
今のフロントエンドはさ~、なんちゅ~の?
あの、Frontend Engineerの友達がベイエリアとかにいるんだけどね~、いつもSlackで現地のトレンド情報を送ってくれるんだけど、よく調べると、ま~あの、銀の弾丸はない、結局はトレードオフ。
C:あ、ちょっちょっといい?
あのね、僕~はやっぱりjQueryが一番いいと…
A:でもね、僕なんかなんちゅうの、海外のカンファレンスに参加する機会がすごい多いわけ。ね?
この間もUSやUKまわってきたんすよね。
そこで一番感じたのはですね、銀の弾丸はないけど、結局はトレードオフというのが一番感じたなぁ~
B:う~ん、キミとはちょっと違うんだよね。
僕は英語がわかるでしょ~?
だから勉強会なんか、登壇してくれって何度も頼まれてね、断ってるんだけど、まぁ、だいたいよく調べてみると、銀の弾丸はない、結局はトレードオフっていう。
C:う~ん、でもね、やっぱり僕はjQueryが…
そうじゃなくてさぁ、僕なんかは1日にね、1日に8時間コード書きまくって生活してるわけですよ。
そうすっと、すごいよくわかるのは、銀の弾丸はない、だけど、結局はトレードオフっていう感じだなぁ~。
僕はいいね数5万個だよ?5万個ついてんだよ?それも「先週いいねが多かった投稿ベスト20」ばっかりよ?
で、だいたいよく調べてみると、銀の弾丸はない、結局はトレードオフなんだよ。
C:あ、ちょっと言わせてもらうとね、僕なんかやっぱりね、jQueryがやっぱりいいなと…
A:あのキミ違うよ、だってさぁ、Watchのレポジトリ数なんか言ったら、8万ありますよJS。
それをさぁ、全部動かしまくって感じんのは、はっきり言って、銀の弾丸はない、だけど、結局はトレードオフ。
B:んはっ、僕なんかね、キミとはちょっと違うんだけどね、懇親会で質問したりとかね、ちゃ~んとフロントントエンドの話して聞くとですね、銀の弾丸はない、結局はトレードオフなんだよね。
C:っといいですか?
フロントエンドを理解するためにはさぁ、アーキテクチャと切り離せないと思うわけですよ。
ね?聞いてる?
ね、ほら僕は今、自作ライブラリ開発してますよね?TypeScriptの、ほら?
だから、そういうふうに、日常にアーキテクチャを取り入れることからね、フロントエンドを考えると、銀の弾丸はない、だけど、結局はトレードオフと言い切れると思うわけよね。
B:ちょっと待ってよ、は~キミとはちょっと違うんだけどね、技術顧問先なんか行くとね、全部僕がWebpackとか、CI環境とか、み~んなレビューするんだよ?ペアプロするんだよ?
そうやってコミュニケーションしてね、でフロントエンドは銀の弾丸はない、結局はトレードオフなんだよね。
C:やっぱアーキテクチャだったらね、Backbone.jsじゃな~い?
A:なんかおかしいんじゃないの~?
え~、今度Abema Towersでフロントエンドのカンファレンスの運営サイドもします。
ま、そういう世界にいてですね、はじめてフロントエンドがよくわかると言い切れると思うんですよね。
だから、そういう言い方からしてもね、銀の弾丸はない、だけど、結局はトレードオフと僕は思うわけなんですよ。
B:違~うちょっと、僕はね、キミとちょっと違うんだけどね、僕なんかね、今度フルタイムのOSS開発やんだよ?しかもWebAssemblyよ?
そうやって実際にOSSを作ってみてね、銀の弾丸はない、結局はトレードオフ。
A:…
B:…
A:ちっ
B:ちっ
A:だからさぁ!!!WebAssemblyがどうしたか知らないけどさぁ!!!
僕ね、今度Google Japanに頼まれて、六本木ヒルズでキーノートやろうかどうしようか迷ってる自分がここにいるわけ。
B:だけどね!!!
A:来場者は1万人だよ!!!
B:それはね!!!六本木ヒルズがいくつあったって1万人がね…
B:六本木ヒルズがね、どうやって…
B:jQueryが…
A:そういう真剣勝負をさ、実力を持ってるところから、もの見てごらん!?
B:違うんだよ!!!
B:ちょっと違うんだよ!!!
モバイルアプリの実装と言えば主力はKotlin、Swift(Objective-C)だけど、簡単な作りであればcordovaをベースにフロントエンド開発ライクに進められる。
そもそものライブラリ選定には関わっていなかったものの、便利と思って使った結果後悔した思い出のお話。
Angular, Vueで実装していたけどレンダリング系に属するイベント盛りだくさんの場合、
結果的にネイティブ実装したほうが楽だしレンダリングの面で有利。
そもそもcordovaだからと言ってネイティブの知識がいらないわけじゃない。
標準サポートしているプラグイン群でできることは限られてくるし、そのまま突き進むならネイティブ実装の知識は必要になる。
これは当たり前だけど…
JSのパッケージングだったりCSSビルドが組めないとなると逆にコスト高。
そもそもNode.jsのビルドを根本的に理解してない奴がプロジェクトを作ったせいで
JSのパッケージビルドもされない、jQueryを突っ込まれるなどひと悶着あった。
3年前くらいだったけど既にTypeScriptも出てたし、何故そうしなかったのか理解できない。
結果ロードが激重になった。そりゃそうだ、minifiedされてないのだから。
用法用量を正しく守って使わないと、後で面倒になる好例だった。
大概は専用プラットフォーム上でビルドしていくがこれがくせ者。
ブラウザIDE(という名のただのテキストエディタ)が使えるけどそもそも構成管理できない。
ローカルビルドと乖離するし、ブランチすら切れないのだから本人以外は触れないシロモノになってくる。
別端末でビルドしようとすると同名の新しいプロジェクトが作成される。
ここまでくるともう触りたくなくなる。ただ、触らないわけにはいかないので何とか整合が取れる状況にした。
さらに言えば、ビルドが終わってステータスが見れるが、内訳が見れるのはそのタイミングだけ。
多分、海外で公開したプラットフォームをそのまま持ってきてるんだと推測しているが流石にこれは悪意しか感じない。
ただのCLIをバックグラウンドで実行するだけのGUIラッパーと化している。
かといってlintを掛けてくれるわけでも無し。
個人的に要らないし今後は使わない。
突き当たったのはWebSocketを使うシーンが出てきたとき。
ライブラリで何とかする方向で進めたかったけどそもそもwebpackビルドにすら対応していなかった。
件のAngularベースの場合はもっとひどくてクソラッパーを作りやがったせいで依存度が激高になった。
ちなみにネイティブはそれぞれにサポートするライブラリが出ていて、最新バージョンに向けてきちんとメンテナンスされている。
根本的にiOS側の実装でレスポンシブ的なレイアウトが作りにくい現状を鑑みて、
WEBベースで新商品などの通知をしたい、残りは情報の閲覧のみでSPA構成的なシロモノで作りたい。
こんな需要には使ってもいいんじゃないかと思う。相当なレアケースだけれども。
いいところは確かにあって、CSSでデザインの調整が効くところは大いに評価できる。
これがまたネイティブ実装だと面倒。特にiOS。お前はダメだ。
結局進めていくとネイティブ実装の知識を求められるのだから、ネイティブで実装したほうが良くね?と言ったところ。
ユースケース的に超単純要件でアプリを作りたい、かつ、ユーザに何かpush通知的なやつを入れたいって場合は使ってもいい気がする。
TypeScript(TS)がJavaScriptの代わりになるだと?確かに型を使えるのは良い。意味不明なオブジェクトを操作しまくって意味不明な動的型付けするJSに型が追加されたら、そりゃバグも減るだろうよ。でもそれは意味不明なオブジェクトを操作し、再代入を繰り返すレベルの低いJSerの責任だ。コーダーの責任なんだよ。Pythonも意味不明なオブジェクトを操作しまくるが、JSほどはひどくならない。Pythonも型ヒントなんてものが導入されたが、誰が使うんだこんなの。果てしなく冗長になって糞だ糞。DocStringを充実させるのと型ヒントを充実させるの、どちらがどれだけメリットが有るっていうんだ。DocStringで十分だろ。全員アホだ。話をTSに戻そう。
散々文句を言ってしまったが、型が使えるのにはこしたことはない。TSを始ようじゃないか。TSをインストールしよう。Node.jsをまずインストールして、TSをインストールしたぞ。ついでにgulp、webpackもいるのか。おいまてよ、ts-loader、webpack-cli、webpack-dev-serverもいるのか。何が何のために必要なのかよくわからないが、node_modulesはすでにパンパンだぜ。tsconfig.jsonを設定してsrcとdistを決め、ECMAのバージョンも決めたぜ。webpack.config.jsってファイルもあるじゃないか。これも設定が必要なのか?俺はいつになったらHello Worldを書けばいいんだ?なめてんじゃねえぞ!!!なんかに似てるんだよ!これはCだ。C言語でプログラムを書こうってときに、コンパイラが必要でインストールして、パスを通して、謎のおまじないを書いて、それでよくわからないままHello Worldを出力したあの頃の思い出がフラッシュバックしたぜ!いや、TSはそれ以上に糞だ。なにせ設定ファイルばっかいじってまだ一行もコードを書けてないくせに、ファイルサイズは70MBを超えてるんだからな。「TS コンパイル」で検索したら、なんで「次にgulpをインストールしましょう」なんて記事がヒットするんだよ!糞か?いや糞だお前は!
プロジェクトに必要なツールをインストールするのは当たり前だって?偉そうなこと言ってんじゃねーぞ!どうせお前なんか先達がすでに準備してくれたプロジェクト環境に後でアサインして、「これとこれが必要だからインストールしてね」って言われてそのまんまインストールしたクチだろうが!どのツールがどのシチュエーションで最適なソリューションなんかわかってねえに決まってら!どのツールがどのシチュエーションで最適なんか誰もわかってねぇんだよ!インターネットに情報は適当に転がってて、お前の先達もDevelopers.IOの記事を読んでなんとなく良さそうだからインストールしてんだよ!全てを正しく把握してるやつなんか日本で3%いたら多いほうだろ。少なくともお前も俺も理解してねぇよ!PHPがRubyを駆逐するって言われて何年たった?今でもPHPは現役で、RubyはPHPの後ろを歩いてるじゃねえか。jQueryが消えるって?同じ理由で消えねえよ!一生やってろばーーか。JavaScriptも消えねぇよ。ECMAのアップデートに従って生で書けば十分だろ。こんなコード書くまでにうんこ行きたくなるような設定ファイルばっかいじらせる言語にとって代わるわけねぇだろ。消えるのはお前だばーか。
まー後はnode.jsとかtypescriptやらUnityとかtensorflowとかも使えるが、基本は割かし広く浅くカバーしてると思ってくれればええで。