はてなキーワード: UNIXとは
オープンソースソフトウェア(OSS)は、ソフトウェア開発でも長い歴史を持ち、なおかつかなり個性的な特徴がある。
ざっと挙げるなら
こうしたコミュニティから生まれてきたソフトを最も多用しているのは、他ならぬWeb系だろう。
サーバサイドプログラミングが中心になることから、Linuxを触る機会も他の開発系に比べて格段に多いだろうし。
結果、「UNIXの哲学」とかGNUの歴史とか全く意識せずとも、こうした活動を通じていつの間にかOSSのエッセンスを身に着けた人が、Web系には少なからずいそう。
その意味では、OSSがどういうわけか今のWeb系の礎になってしまったという意味で、タイトルに書いた通りになっているのかなーと。
あれが押し付けに見えた?
マジか…こっちはあくまで
「より良いプログラマになりたいならこうするといいと思うよ」
こっちがUNIXとコマンドラインを必要なスキルに含めた一方で、古典力学や電磁気学を含めなかったのも、突き詰めれば個人的経験に基づくものという程度でしかないことは、読んでてわかるだろ?と思っていたのだが。
いちいち
「※個人の感想です」
みたく書いたり強調しなきゃいけないのかよ。
めんどくせーけど今度からそうするわ。
ともかく、そういうわけであの内容に乗るか乗らないかだって完全に自由だし、同意してくれる人が一人でもいれば、こっちとしては書いた甲斐があったんだよ。
これだけ途方もない反発が来るとか予想外だし、同意できないならスルーしてくれてよかったんだが。
それから、現場できれいなコードの重要性を説いて回れというけど、俺はそいつの親でも先生でもない。
そこで相手に
「お前は俺の先生か?」
と反発されずに言うことを聞いてもらうことがどれだけ大変か、考えたことがあるか?
そういう意見を聞いて実行してもらう以前に、そういう話ができる関係を一人ひとりと構築するところから始まり…お前がその立場だったらできるのか?
他の人より多少きれいなコードが書けるというだけで、なんで自分がそのコストを負わなきゃいけないんだ?なんでそれが自分の仕事になるんだ?とも思うしな。
そういう、言い出しっぺが損するみたいな構図そのものにも嫌気が差すんだわ。
結局知る必要がないから知らないままでいいという態度でこれまでの人生過ごしてきたという自覚はあるんか?
保守性が足りないなら保守性を高める必要性を説明すればいいだけやん
お前の同僚がUNIXやコマンドライン知らないことで保守性が下がってるなら
その同僚に自分たちの業務でUNIXやコマンドラインの必要性をわからせるのがやるべきことであって
同僚や会社への不満を僕が考えた最強のプログラマ教育を見ず知らずの他人に押し付けることで解消するのは八つ当たりでしかないぞ
↑の元増田として、元記事から派生させる形でプログラミングの学習に関する関連エントリを書いた。
その結果は、
という、非常に強い反発だったわけで。
本件で反発を受けたのはUNIXとコマンドラインの使い方に関するものだけど、多分問題の本質はそこじゃなくて、
なぜこれを問題視しているかと言えば、現実問題としてプログラミングにおいて
「動けばいい」
というスタンスで低品質のコードを量産する人があまりに多いし、それは
ちなみにこういう人らの書いたコードは、とにかく信じ難いレベルで保守性が低い。
後から他の人が手を入れることはもちろん、下手をすれば書いた本人でもメンテ不可能な、言葉を選ばずに言えば「ゴミ同然のクソコード」だったりする。
こうした低品質のコードは作成者の信頼を損なうだけでは済まず高確率で周囲を巻き込むし、つきあわされる方はたまったものではない。
何もこれは個人の傲慢な感想でもなんでもなく、開発に携わった多くの人間が感じる話だと思う。
なので、そういうできない人には一秒でも早くできる人になって欲しいし、これからプログラミングを始める人にはできる人になって欲しいわけ。
(「クビにする」「篩にかける」というのは可能な限り避けたい)
だからこそ
「ぼくのかんがえた、よりよいプログラマになるためにやってほしいこと」
みたいな形で、学習に関するエントリとしてあのような駄文を書いたわけだが、そんな押し付けがましいものはいらないと。
まあプログラマの大多数がいらないと言うならいらないでいいわ。
自己満上等だ。
じゃあ一体どうしたらいい?どうしたらいいと思う?
こっちは迷惑してるし、かといって仕事を選べるほど偉くもないし、業界から足を洗うのも願い下げ。
こう書くと
「お前がもっとできる奴になって、できる奴とだけ仕事できる環境に行けばいい。それができないなら諦めろ」
という答えが返ってきそうだけどな。
確かに、自分を差し置いて他人のことをどうこうしようというのがおこがましいのはその通りだろう。
しかし、そうは言っても「ゴミ処理」の仕事は確実に回ってくるんだから文句の一つも言いたくなるし、その状況はどこまで行っても変わらなさそうなわけで。
「必要になってからやればいい」だと「動けばいい」で仕事をこなす糞コーダが量産されそうだけど、それでいいと思ってるってこと?
「動けばいいでは済まない」事態にならない限り、どれだけソースの保守性が低かろうがいいとも読めるんだが?
それで信頼を失うのが当の本人だけなら勝手にすればいいが、それだけで済まないケースも多々あって、なんなら巻き込まれる可能性も普通にある。
組み込みがLinuxベースといってもあんだけコマンドラインやUNIXのノウハウに否定的なんだから、きっと本当に不要で余計な知識なんだろうよ。
それこそ組み込みで必須であることをやたら強調する、古典力学や電磁気学や微分方程式を一生懸命勉強したらいいんじゃねーのって思うわ。
誰かが電気回路を設計しなければならない、って一見もっともらしいんだけど
組込でも基本unix動いてるし
どっちも種類によって使い方も違うんやし
UNIX系OSでバックエンド開発しようとしてる人に「XCodeインストールしてください」「AndroidSDKの仕様学んでください」はおかしいのと同様に
Androidアプリ開発しようとしてる人に「UNIXのCLIの使い方を学んでください」「laravel環境構築してください」はおかしいんやで
追加で何かを学べば引き出し増えるのはUNIX系CLIに限った話でもないやん
WEB系しかやってない人がiOSやAndroidのAPIやIDE学んだって引き出し増えるし
UNIX系CLIという特定の環境に依存したもの(組み込みやスマホアプリやPCアプリ作成者にとっては知らなくても開発可能)である必要もない
お前がWEB系以外の開発スタイルを知る気がないのと同じように非WEB系いTエンジニアもWEB系のことなぞ知る気があるわけではないことに気づけやで
MicrosoftがWSLを出してる時点で、
サーバサイドはUnixにかないません。と言っているようなもんだと。
ところで、WSLはそろそろ安定して動くようになったの?
今やほとんどのPCユーザはWindowsを使っているのだから、UNIX系を追加で学ぶことで、Windows以外の環境でもプログラミングできるという話。
それだけ引き出しが増えるし、環境の差異に振り回されず物事を考える取っ掛かりにもなる。
CLIに全く触れることなくプログラミングを学ぶことが問題なんだよ。
もし最初からIDEでプログラミングを覚えてしまったら、多分もう二度とCLIでプログラミングをする機会はないと思う。
そもそもIDEでの開発ありきという姿勢が、つい最近までWindowsでの開発スタイルだったわけだし、その意味でも非Windowsな開発スタイルも知る必要がある。
プログラミングでUNIXのCLIに全く触れないとしても、CLIでの開発は出発点として重要だから言ってるんだよ。
いきなり最初からIDEだと、IDE使った開発しかできないプログラマが生まれる可能性については問題ないと?
さらにIDEを使いこなすことばかりに注意が行って、データ構造とアルゴリズムへの意識が甘いプログラマとかも生まれそうだよね。
特に独学だと。
そこらへんどう思ってるんだろう?
まぁそういう人もいるよね。それで問題ないと思うよ
サーバー←→クライアントの関係、基本的なネットワークが理解出来ているか?だけが重要な訳で
CUIの画面でカタカタったーーンが重要なわけではないし、必要になったら必要なコマンドをググれば事足りる
あとワイは未経験者はLinuxと仲良くなっといた方がスムーズでは?派だが
わざわざ普段使うオペレーターティングシステムをUnix寄りにましてやMacにする必要性はない思ってる
この増田→ anond:20220811161554 がMacなんちゃら書いてること読み落とした
MacはApple信者とスタバでドヤ顔に任せておけばいいと思うよ
https://anond.hatelabo.jp/20220527063027
あとWSL2使えよは何度も言ってるわ
今のプログラミングはネットワークと密接に関係することが多いので、まずはそこを押さえないといけないでしょ。
それ踏まえたらWindowsしか知らないというのは微妙だし、初期の段階でUNIX系に触っておくのは良い選択だと思うけどね。
初心者ならLinuxのディストリビューションの違いとか問題になるレベルではないし。
プログラミングを学ぶなら、ゆくゆくはネットワークの話とかも知っていかないといけない。
あと環境依存ではないプログラミングの手法に、できれば最初から触って欲しい。
そんでプログラミングの基本はターミナルでコマンド入れて"Hello, world"だけど、それをコマンドプロンプトとかPowerShellでやるのは微妙。
そう考えるとできるだけUNIX系か、それに近いインターフェースを持つOS上でプログラミングしたほうがベター。
だから理想を言えばLinuxでプログラミングを学ぶのが一番だけど多分ハードルが高すぎるので、macでもいい。
もちろん、これは「欲を言えば」くらいの話ね。
Windowsでプログラミングを始めるのは「良くはない選択」だが「絶対に避けるべき」という話でもない。
だからWindowsのコマンドプロンプトやPowerShellでプログラミング事始めというのも「まあ仕方ないか」みたいな感じ。
あとVSCodeとかの統合開発環境は覚えたほうがいいけど、初学の段階で学ぶ必要はないと思ってる。
確かに「統合開発環境を使いこなす」ことは現在の開発だと基本なんだろうけど、かといってプログラミングの本質ではないので。