はてなキーワード: オブジェクト指向とは
俺の独断と偏見で(主にWeb系)プログラミングにまつわる神を感じるものを挙げる。
まずDocker。これがない頃はパソコンの中の開発環境はグチャグチャで、特にライブラリの依存関係の管理がとてもしんどかった。今はDockerのおかげでいくつも開発環境を持てる様になったんでマジ便利。作った人は神に違いない。
次にオブジェクト指向。これがない頃からプログラミングしてた訳じゃないけど、プログラミング始めたての頃に取り組んで訳分からなくて放置して、手続き型のプログラムをそこそこ書いた後でオブジェクト指向に戻ってくると何これ!データと手続きをひとまとめにできる!めっちゃ便利やん!ってなった。アルゴリズムとデータ構造っていうのはそんなタイトルの教科書があるくらいにひと続きのものだからこうなるのは必然かもしれないけれど、その必然を形にした人は神の様な目を持っていたのだろう。
そしてGit。これセーブポイントが作れるだけでしょ、なんて思ってたけど、GitHubと連携させて複数人でひとつのプログラムをいじり始めると途端に神ツールと化す。それにセーブポイントが作れるだけでも十分に神だった。
あとUTF-8。Shift-JISやらEUC-JPやらが混在していた世界は端的に言って地獄だったのに、こいつのおかげで文字コードを基本的に気にすることがなくなった。神。
他にもいろいろあると思うけど、俺としてはこれらに頭抜けて神を感じる。
大学卒業後4年ほど会社員をやったあと、ウェブ関係のプログラマを目指して1年ほど、バイトしながら独学で勉強しています。
ネット上には詐欺師まがいの情報商材屋とイキリマウントゴリラが跋扈し、普通の人間向けの情報が少なかったので、参考までに書いてみます。
なお、ここ数年のウェブエンジニア転職ブームとは無関係に転職を考えていたので、ブームは正直迷惑だと思っています。
独学にはいくつかの大きな問題点がありますが、もっとも大きいのは「全体のロードマップが存在しない」ことだと思います。
初学者は具体的に何をどの順番で学べばいいのかわかりませんし、この情報はネット上にはありません(冒頭にも書いた通り、そう思ったからこそ、このエントリを書いています)。
などありますが、どちらも普通の人間向けというには若干ゴリラ臭と商材屋臭がします。
また、プログラミング初心者向けの教材はおしなべて貧弱で、腹が立つほど不親切です。読んでいて何度もブチ切れそうになります。
特に初学者の場合は、教材の練習問題ひとつ解くにしても、誤字脱字等の初歩的なエラーのために平気で数時間のロスが発生したりします。
当たり前ですが、これは純粋に時間の無駄なので、すぐに講師に相談して解決したほうがいいです。
こういうことを書くとすぐに「自力で問題解決できない人間はプログラマに向いていない」と言いだすゴリラが現れますが、いまはそういう話はしていません。
そのほか独学だと自分の実力や相場感を測ることもむずかしく、その分詐欺師やゴリラに引っかかりやすくなりますし、基本的におすすめしません。
いまさらC言語と思うかもしれませんが、勉強するうえで重要なことはプログラミングの仕組みを理解することであって、どの言語から始めるかではありません。
その点、上記「苦C」はとても丁寧に文法を説明してくれますし、ポインタの説明を通してメモリの仕組みも教えてくれます。
ただし、回答例のコードに誤字脱字があって動かない等の発狂ポイントがいくつかあるので、注意が必要です。
勉強のやり方としては、まずはサイトを読みながらスマホのC言語アプリでポチポチ書いてみるところから始めると気楽でいいと思います。
途中で頭が混乱してきたら、再度冒頭からきっちり丸暗記するつもりで勉強するのがおすすめです。プログラミングに暗記は不要だと言うゴリラもいますが、あれは嘘です。
intはintegerだからintなんだとか、そういうことを調べながらやるだけでも解像度が格段に向上すると思います。
実際にC言語でバリバリ書けるようになる必要はないので、おおよその仕組みを理解してしまえば、最後のほうは流してしまって大丈夫です。
検索するとこの手のサービスが一番上に出てきますが、内容は不十分だと思います。かゆいところに手が届かず、使っていて非常にいらいらします。
とはいえ他に代替となるものもないので、サービスを利用しつつ、必要に応じて入門書を読むのがおすすめです。
私が利用したかぎりでは、Progateは教材の内容が薄く、Paizaは無意味にオタク臭くて私は苦手でした。N予備校やUdemyの評判がいいみたいですが、使ったことがないのでわかりません。
私はウェブ関係のプログラマ志望なので、ProgateとPiazaでHTML/CSS/JavaScript/Git/Ruby/Ruby on Railsを勉強しました。
最近は初心者Railsエンジニアが供給過多の印象があり、DjangoやLaravelのほうが就職には役立ちそうな気がしています。
余談ですが、無料の教材として有名な「Railsチュートリアル」 https://railstutorial.jp/ は、あえて劣悪な翻訳を放置することで、自社のプログラミング講座に顧客を誘導するビジネスモデルのように見えるので、内容はともかく個人的にはあまりいい印象を持っていません。
ちなみに私はこの辺で迷走していたため、いろんな言語をちょっとずつかじっています。
『スッキリわかるJava入門』はオブジェクト指向を理解するのに役立ちましたし、『退屈なことはPythonにやらせよう』で覚えたスクレイピングは求人情報の収集にとても役立っています。ほかには『プログラムはなぜ動くのか』も読んでためになりました。
基本的に本を読んで損することはないので、時間の許すかぎりたくさん読んだほうがいいと思います。私はあまり読めていません。
Railsチュートリアルを参考にRailsアプリのポートフォリオを作りましたが、完成まで半年くらいかかりました。
上述の劣悪な翻訳のせいもありますが、データベースの設計を考えたり、UIを工夫してみたりすると、いくらでも時間が吸い取られていきます。
知識ゼロから3ヶ月でポートフォリオを作りました! みたいな若手情報商材屋を見かけると、そんなにすごい能力があるなら普通にエンジニアだけやってればいいのに、と思います。
完成したアプリはDockerでコンテナ化したうえで、GithubActionsで自動テストを走らせ、AWSのサーバーにデプロイしていますが、この辺は言語の勉強やアプリの製作と比べたら全然むずかしくありません。
まともな日本語で書かれたまともな教材が揃っていますし、ネットの記事も豊富にあります。ここまでの勉強で、エラーメッセージや多少わかりづらい文章を読み解く能力も身についているはずです。
それぞれ1、2週間集中すれば最低限の実装はできると思います。ただしAWSの設定だけは、適当にやると数万円の請求書が届いたりするので注意が必要です(届いた)。
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
530あとで/4137users NTT フレッツ光における通信速度などの現状について、背景や仕組みから正しく理解する 2020 - diary.sorah
304あとで/1974users 高等学校情報科「情報Ⅱ」教員研修用教材(本編):文部科学省
204あとで/2230users iPhoneでの料理撮影が苦手なライターがカメラマンに論理的に指導を受けた結果→憂鬱な撮影が楽しくなった - メシ通 | ホットペッパーグルメ
202あとで/1706users 天才プログラマーの「締切に対する考え方」に、感銘を受けた。 | Books&Apps
177あとで/1946users ネットワークエンジニアとして | www.infraexpert.com
170あとで/1064users 【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wadaのブログ
169あとで/826users 7つの設計原則とオブジェクト指向プログラミング - ソフトウェア設計を考える
168あとで/1180users ローカル開発環境の https 化 | blog.jxck.io
166あとで/1005users ソースコードブランチ管理のパターン | Martin Fowler's Bliki (ja)
164あとで/991users 大学に行かずにコンピュータサイエンスを学ぶときに優れている教科書や講義映像はどんなものがあるのか? - GIGAZINE
164あとで/1541users 衝撃の結末が話題 無名ラッパーが投稿したYouTube動画が異例の48万再生、投稿者と大学側を取材 - ねとらぼ
161あとで/1789users 無印良品によるサーキュレーターの季節別の活用方法が有益すぎる→早速効果を実感する人も「部屋が快適…!」 - Togetter
147あとで/2111users 批判の文化が日本を技術後進国にしているかもしれないという話 - メソッド屋のブログ
143あとで/809users データベース設計の際に気をつけていること - 食べチョク開発者ブログ
142あとで/731users Web系企業/事業会社への最高の反面教師: "Spotify's Failed #SquadGoals"を読んで - アジャイルコーチの備忘録
136あとで/1777users 「言い切る人」が強すぎる。 | Books&Apps
129あとで/1655users iPhoneのNFCシールでの自動化が便利すぎてシール貼りまくった – ごりゅご.com
129あとで/616users 良いコードを書くための8つの習慣 - New Relic公式ブログ
128あとで/1164users GAFAコーディング面接こんな感じでした - yambe2002’s diary
126あとで/1345users 無料で美麗な絵画やカオスなポスターなどがダウンロードし放題、編集や商用利用も可能な「Artvee」が登場 - GIGAZINE
125あとで/687users デザイン脳を鍛える方法|ハラ ヒロシ|note
125あとで/993users 1からイラストの勉強をした話|せたも|note
124あとで/608users Dockerとはどういったものなのか、めちゃくちゃ丁寧に説明してみる - Qiita
124あとで/992users Web制作の常識が変わる、便利な最新オンラインツール48個まとめ - PhotoshopVIP
121あとで/1091users なぜ、国ごとに差が出たのか。そして第二波がどうなるか。 - 楽園はこちら側
119あとで/1321users アメリカの美大で学んだこと05:「絵がうまい」より大切なこと|Kenta Shimbo|note
119あとで/1684users 自民系の地方議員です。カネ配りについて書きます。 | はてな匿名ダイアリー
118あとで/1444users 料理に対するモチベーション「ゼロ」のぼくがたどり着いた、これだけで料理が簡単&美味しくなる調味料 - ソレドコ
118あとで/1195users 視座の可視化|kgmyshin|note
116あとで/1224users 【公式】ぷよぷよeスポーツ×プログラミング | SEGA
あとで読むタグの数が1月に近いレベルまで大幅に反発、増加した。
関数型プログラミングにある程度なれているstaticおじさんだけど
オブジェクト指向なんて今どき使う意味ないし。バインディングとビューモデルとかださくて、ほかはまあ、普通使っていればわかるだろうというかなんというか。
マネジメント層の話が出てきた割に、その後にマネジメントの話は出てこない。最後に1文あるだけ。
オブジェクト指向の概念が身についてないベテランも結構いるってことは、
オブジェクト指向の概念が身についてなくてもベテランでいられるわけだ。
プログラミングという言葉がアフィブロガー御用達になって、SNSでプログラマーを名乗るのが憚られる感じの昨今。
プログラミングを勉強すればフリーランスで一生困らないみたいなこと書いてあるけど、そんな夢のスキルじゃないよ。
それなりにベテラン()を見てきたけど、結局はマネジメント層になれなければ会社にしがみつくことになる人が多い。
これはvueかReactか、javaかRubyかみたいな話じゃなくて、もう少し基本的な部分。
例えば大きいのはオブジェクト指向とクラス/インスタンスの概念。
他には、ガベージコレクタ、例外処理、マルチスレッド、デリゲートやラムダ式、非同期処理、バインディングとビューモデル、イテレータ、null安全。
今プログラミングを学んでる人には当たり前かもしれないけど、これらは十数年かけて徐々に当たり前になっていった。
ITバブルでブイブイ言わせていたけど、これらをうまく扱えないベテランは結構いる。
固定長メモリとポインタとmemsetで全てをまかなってきた層や、静的なモジュールで全部の画面を作ってたVB屋とか。
若いころは勉強すればいいと思うだろうが、理解はできてもそれを流暢に使いこなし適合するのは意外と難しい。
プログラムの中でその人の担当箇所だけいまいち読みにくくて、取り回しの悪いものになってしまう。いわゆるstaticおじさんというやつ。
これはベテランのイラストレータやシナリオライターが、デッサンや構成力はあっても、なんか古臭いものが出来上がってしまうのに似ている。
こうなると若いチームメイトや新しいプロジェクトからは敬遠される。
もちろん、COBOLの案件が未だにあるように、レガシー資産を利用した仕事で腕を振るえる場所は結構ある。
ただそういった環境は既存の人材・企業にがっちり掴まれてることが多く、後から見つけて入り込むのは簡単ではない。
ほとんどの参加者は、コンピュータサイエンスなどの学位を持っているわけではなく、国内のSIerなどでパソコン弄りをしてるだけのただのオタクです。
彼らの大半は、まともなコードが書けるわけでも、インフラ等の保守ができるわけでもありません。
非エンジニアの連中に到っては、流行りのIT用語を援用したポエムを作ってるだけであり、話を聴く価値はありません。一部の技術のある人たちも、そういう人たちに合わせて話をしています。
よく、「プログラマはつねに最新技術を学ばないといけない」などと言われます。
これはある意味正しいのですが、この主張が指している対象は、新しいツールやフレームワークの単なる「使い方」であって、根本理念ではないのです。
実際のところ、ソフトウェア技術なんてものは、コンピュータの黎明期から大して進歩していません。進歩しているのはほぼ全部ハードウェアの技術です。
例をあげれば、「オブジェクト指向」なんてものはC言語ができた時点で既に確立されており、有能なエンジニアはみんな知っていたのですが、90年代に入りJava等が普及すると同時に量産型のコード書きの間でにわかに流行りだしました。
エンジニアが第一義的に学ぶべきなのは、コンピュータサイエンス全般の基礎であり、それを欠いた人が流行りに飛びつくのは虚しいだけです。
本人がポエムつってんだから、ポエムでいいじゃん。そんなの人それぞれだろ。オブジェクト指向のカプセル化だなんて深淵な概念だし、この問いなんて哲学的であるとさえいえる。だいたい、カプセル化とは「データとそれを操作する手続を一つにして,オブジェクトの内部に隠ぺいすること」である、なんていったら、怒られるんじゃないか。隠蔽ってなんだよ。トートロジーかよ。この問題に正解したとしてカプセル化を使いこなせるわけでもないし、分かった気にさせるこけおどしでしかない。そういう霞みたいな文章をポエムっつんだよ。
※ ただし一般的にはポエムという語にはそういう下卑た意味合いはないと思います。 悪い意味でポエムという言葉を使うのは確かによくない風潮だと思うので今後は控えるようにします。俺は元増田ではありませんが。
情報処理技術者試験の資格を取っても実質的に得るものはありません。「実質的に」というのは、技術者としてのスキル向上に貢献するということであり、「報奨金が貰える」とか「履歴書に書ける」などの技術と無関係なものを含まないということです。
なぜ、情報処理技術者試験が役に立たないのかと言えば、出題内容が表面的な知識問題に極端に偏っており、本質的な理解を問うていないからです。たとえば、オブジェクト指向の三要素に「カプセル化」「継承」「ポリモルフィズム」がありますが、これらを御題目のように唱えていても何の意味もありません。しかし、情報処理技術者試験ではこれらの用語さえ覚えておけば、しっかり点になります。
https://www.fe-siken.com/s/kakomon/19_haru/q42.html
こんなのは単なるポエムであり、これが解けたところでコードが書けるわけでも、良い設計ができるわけでもありません。
数学で喩えれば、「加減法」とか「代入法」のような用語を暗記して、具体的な連立方程式の解き方は分からないようなものです。
ひどい問題は挙げればキリがありません。
https://www.ap-siken.com/s/kakomon/22_haru/q44.html
図の名称を答えさせる問題。図を読み取らせる問題なら、まだ理解できますが。そもそも、UMLなど別に技術者として知っておくべき知識でもありません。
https://www.fe-siken.com/s/kakomon/23_aki/q50.html
これも、こんな分類自体、覚えたところで何にもならないわけですが、その用語を答えさせる問題。いかに、この試験がエンジニアリングやプロジェクト管理の本質と関係ないかがよく分かります。
極めつけはこれ。
https://www.fe-siken.com/s/kakomon/17_haru/q52.html
地方の公立中学校の定期試験レベルのひどい問題です。出題者は、1だの2だの4だの7だのといった数字と語句の対応を覚えることが重要だと思っているのでしょうか。
つまり、ある種の発達障害ではない意識高い系ポエマーを認定するための試験であり、そもそも技術者のための試験ではないということです。あとは、中小企業診断士などを受ける人が試験免除を獲得するためとか。
そもそも、コンピュータやプロジェクトマネジメントの技術を、資格試験で勉強しようというのがピントがズレています。それらは既に良質な解説書が豊富にあるのだから、それで勉強すればいいのです。
放課後、親に無断で学校の先生に精神科のような場所に連れられ、「それは鬱ではなく、思春期による一時的な悲しみではないですかね」と医者に言われてから10年が経った。
あの頃から相変わらず、成長していない。
高校での成績は上位10%に入っていて、4年で卒業することが難しいと言われた大学もなんとか4年で卒業できたので、決して頭は悪くはなかった。
ただ、人との会話は不得意で、友人を作ることはできなかった。
でもそういった人々はこの世にある程度はいて、みんなどこかで働けているからきっと大丈夫だと自分に言い聞かせていた。
面接はことごとく落ち、大学卒業後も内定を貰えずそろそろ死のうかと検討した矢先に運よく入社したところは、後になって知ったが定着率が低い会社だった。
そこで気付いてしまったのは、自分がエンジニアに向いてないどころか、社会人に向いてないことだった。
一通書くのに最低でも30分-1時間はかかった。(相場が分からないけど長い気がする)
顧客のメールを読んでも、内容がふわっとしていて意味が理解できないことがあった。
相手が何を言っているか分からなかった(要求だったり、用語だったり)。
分からないことをそれとなく伺ってみたら「お宅の会社はその程度なんですね?分かりました」と言われ、会社の信用を下げてしまった。
その後、その顧客とのメールに怯える日々が続き、毎日嘔吐した。
あんなに自信があったプログラミングだったのに、小規模システムのコードでさえ想像を超える入り組み具合で読めなかった。
というのも、フレームワークといったものにも触れたことがなかったり、インフラ側は全く学んでこなかった。
「オブジェクト指向」というような概念的部分はテストの為に暗記したことはあれど、実際に言語の特徴や構造の違いを理解できたことはなかった。
フロントエンドとバックエンドの違いもよく分からず、自分が得意だったものがなんだったのか分からなくなった。
何よりも、自分には新しい知識をインプットする力が驚くほどになかった。
最終的には、自分のキャパを超える残業や上司による罵詈雑言で数秒に一度頭がまっしろになって仕事に手がつかない状態になり、辞めた。
能力のある社員もすぐに辞めていることから、会社にも改善すべき点はあったのだろうが、それが実際の問題ではなかった。
自分の能力の無さはどこに行っても通用しないんだろうな、ということが分かってしまった。
スポーツをしていた人が採用されるのを話に聞くが、その理由が初めて分かった。
コミュ力も体力あるし、ちょっとやそっとのことでは根を上げないからだ。
自分はコミュ力もないし、メンタルも弱く、自己肯定感もなく、唯一自信のあった学歴や技術力も実際には意味をなさなかった。
私の考えはあまりにも浅はかで、高校や大学でしっかり勉強をしていれば、あとは会社からのサポートで仕事をこなせるようになると思っていたことだ。
一応自分なりに努力はしたつもりだった。勉強も、精神的な面においても。
在学中や就業中に精神科に通い、鬱やPSTDと診断された。いろんな薬を試したことはあるが、薬の副作用の眠気や吐き気で通常時より無能になったので向いていなかった。
カウンセラーは話を聞いてくれることは有難いが、危険人物として扱われたりしたことがあったり、何の解決にも至らないのでお金がもったいないな、と個人的に思った。
大学を卒業して引きこもっていた頃、会話の練習をするためにひきこもり当事者会的なイベントに参加した。
それぞれ背景は違うが、頑張って外出をして知らない人と会話してみよう、と集まった人たちは皆、優しかった。
不審者のようにそわそわしてしまってもいじめられることはないし、互いが傷つくことのない当たり障りのない会話ができたし、人とゲームができて楽しかった。
同じ境遇にいる方たちと過ごして一番に感じたのは、自分はやはりこちら側の人間なのではないかということ。
学校やインターネットで人と会話をして友人を作れるような人や、仕事をこなせている世間一般の人たちのようには到底なれない。
社会不適合者が運よく社会復帰することができても、精神が弱い上に周りに溶け込めない為、続きはしない。
少し前にとある記事に「生涯バイトなんて、将来のことを考えているの?」というニュアンスのブコメがあったが、どんな形態であれ生きる為に働き続けてきちんと自立できている人がどれだけ偉いことか、と思う。
もしいつか真っ当な人間になれたら、あの時精神科に連れてってくれた先生に御礼を伝えようと思っていたけど、未だに連絡が取れていない。
10年超のプログラマやってるものだけど自分の成長過程を書いてみよう
・プログラムによる既存業務の効率化は目に見え易いので、非効率だった多数の人材と自分が匹敵する能力を持っていると勘違いしやすい点。
・オブジェクト指向やプログラミング自体に事象の抽象化や細分化、項目化といった思考が必要で、物事の数学的把握が必要な点。
・効率化によって職を失う人間はこの先も増えるが、自分達の仕事は減らないだろうという漠然とした思い込み。
・定量的、数学的把握は説明がしやすく、業務やプレゼンへの応用は楽だが、数値から漏れた部分や把握できないイレギュラーは無視しがちである点。
4つ目は敢えて言うなら文系の素養が必要で、これを持っている人間が一流。プログラムにできない(し辛い)部分を把握するプログラマーは自分の仕事の無意味さを認める事になるが、これを抱えたまま仕事をするのはメンタルの面からも大変。他に挙げるとすれば、専門用語が多く仲間内で親交をする傾向が高いので外部からの目に気付き辛い点、一種の官僚化だろうか。
それから6つ目(笑)と言ってもいいかもしれないが、プログラムその物の社会的意義まで頭の回っていない人間が多い印象はある。業務効率化による収益増は当然、自分の給料に反映されるが、そこから漏れた部分の責をプログラマは問われない。
一例を挙げれば、(文書に限り)郵便事業が縮小による情報伝達の効率化という恩恵は万人が受け、効率化に伴う収益は電子化業者が郵便事業者と分け合ってきたろうと推測されるが、電子化業務従事者は封書や葉書の印刷業者や納品業者、インク製造業や製紙業界までに頭を回す事が出来ない。もっと言えばパルプの精製や原料の輸出入にも関わり、産業としてはまさしく革命が起きていると言っても良いが、それを自分の仕事に係わる物だと捉えているプログラマーはまずいまい。
負の側面として電子文書は膨大な労力をかけてフォントや外字の整理を今も強いられ、ファイルフォーマットや送受信データ形式の細かな不整合を放置したまま進んできたが、それに関して電子化業務側からの社会への問いかけといった視点はなきに等しい。加えて、数値化不能な(文書に限る)郵便業務の益は、配達員と顧客のコミュニケーションや地域事情の把握、高齢者福祉に関わる面にまで及ぶのであり、それをモニターの前にいるプログラマが担うのは不可能である。
二行目に関しては特権意識とは全く関係がなく、言語による思考を行っていない人間に言語で話しかけるのが間違っているのではないか、と考える。
絵描きや作曲家の例を挙げれば理解は容易である。これらは頭を使っている、いない、の問題ではなく使い方が違うだけの話だ。
そもそも、頭を使うの対義は身体を使う、になるのかしれんが、ヒトがどちらか一方だけを使うなど有り得ないし、その活動の比重が脳に偏っていれば偉い、と言うのは思い上がりである。
できる人とできない人に分かれる、というのはどうだろうか
プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。
JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightとかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScriptに改名されたり、規格を話すときはECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースのオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。
Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。
Javaは初期のころオートボクシング / アンボクシングもなく、ストイックなオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコードも簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である。
PHPはWebネイティブな言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能や初期化していない変数を最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列と数字を臨機応変に切り替える機能もあり(今もそうかは知らん)、数字と文字の比較を比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。
C#はHello Worldくらいしか書いたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。
C++は黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーションで腱鞘炎になることもない。PC Unixにも最初から環境がインストールされているか、簡単にインストールできるので毛嫌いせず使うとよいと思う。
Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。
TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。
Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるから、カーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。
これ以下のランキングのもその気になったら書こうかな。
たとえば、DI(Dependency Injection)で検索すると、すごい数の解説記事が出てくる。それも、プログラミング初心者向けではなく、開発者向けに。
だけど、ぶっちゃけDIなんて、解説が必要なほど難しいこととも、内容のあることとも思えない。
これって、アレと同じなんだよな。数学でいつまでたっても、(-1)×(-1)=1になるたとえ話とか、0.99...=1の説明とかに夢中になってる人たち。普通に数学ができる人は、そんなのはさっさと卒業して内容のあることやるものなんだが。
おそらく、理解力の低いプログラマと、コードは書けないがオブジェクト指向は大好きなポエマーの相乗効果で、こういう話題が盛り上がったんだろうなー。