はてなキーワード: プログラミングとは
競技プログラミングって知ってるか?要するにプログラミングの腕試しをするコンテストだ。で、昨日、AtCoderのコンテストで起こった事件がプログラマ界隈をザワつかせてる。
何があったかって?ChatGPTが使われて、普通なら上級者しか解けない問題が解かれたんだよ。おかげで、自分の実力じゃありえない順位に入ったやつが出てきたわけだ。
これに対して競プロコミュニティが大炎上。「ChatGPTが界隈を破壊する」「おもんない」って声が上がって、規制しろってムードが一気に広がった。
普段、親AIを気取って反AIを馬鹿にしてるプログラマたちが、自分たちの立場が脅かされるとたんに反AIに早変わり。
要するに、自分たちの「城」が危なくなると、途端にAIを敵視し始めるんだよ。
この現象は、技術の進歩が人々の立場や考え方にどれだけ影響を与えるかをよく示してる。
AIは便利で強力なツールだけど、それが人々の仕事や趣味にどんな影響を与えるかについては、まだまだ議論が必要だってことだな。
真面目に議論するなら、お好み焼きをクラスとするかも怪しくなる。
オフトピだがね。
オブジェクト指向が栄華を極めたあの時代、責任、関心、主体性、凝集、アイデンティティ、is-a has-a、… 研究者やギーク、仙人らによって、あらゆる説明がされたが、結局、オブジェクト指向は現実世界を捉える人間の感覚の応用でしかなかった。
「モノ」と思える奴をクラスにすればいい。
それ以上でも以下でもなく、あとはプログラミングの構造を整理するために有効に使えるケース・バイ・ケースの妥協点を探すことになる。どうモデリングすべきかの議論は収穫が少ない。いや、極めれば霧の向こうで信じがたい洞察を垣間見れる可能性はあるにはあるが…、しかし多人数でソフトウェアを維持管理するのが正解だと分かった今、属人性を排除するためには霊感を説明するよりシンプルに留めるのがベスト・プラクティスだ。
プログラマーの関心が関数型に移ったのは、そういう経緯もある。数学をバックグラウンドに持つ関数型言語をバックグラウンドにする方が、ミーハーな技術屋連中の興味を引けた。
お好み焼きがクラスなら広島風お好み焼きはサブクラスじゃあないんだよな。
並列な、別のクラスとなる。
自分は頭が悪いプログラマーなのだが、プログラミング自体は好きで、仕事もそれで食べて行けている。
ただ頭が悪いので、他の人なら30分で実装できるものも、自分は半日や一日がかりで実装している。
うんうん悩んで、紙に描いて、書いては消してを繰り返してテストを通るプログラムを一日がかりで書くのが楽しい。今日も頑張ったなと思えて帰宅できる。
けど他の人なら30分でできる。
「ここ詰まってるんですけど……」と実装するための一部を同僚に相談したら、「あーなるほどね」と教えてくれて、ついでに実装全てをどう書くかも流れでついでに書いてくれる。
そこまで聞いてないのだけど。
そのままプルリクエスト出せばいいのだが、俺が理解できていないとまずいので、同僚が書いたプログラムをうんうん考えて理解する時間になる。他人の書いたプログラムは難しい。この時間はつまらない。
はい、GPUの仕組みや重要性を分かりやすく説明した本や教材はいくつかあります。例えば以下のようなものが挙げられます。
1. 『GPUを支える技術』 株式会社ボーンデジタル (2023年)
GPUの基本的な仕組みから、最新のGPU技術まで幅広く解説されています。技術者向けですが、図解も多く分かりやすい内容です。
2. 『つくりながら学ぶ! PyTorchによる発展ディープラーニング』 小川雄太郎 (2020年)
機械学習フレームワークPyTorchを使ってGPUプログラミングを学べる実践的な書籍です。サンプルコードを動かしながら理解を深められます。
GPUの歴史から最新アーキテクチャまでを網羅的に解説。コンピュータサイエンスの基礎知識がある大学生・大学院生向けです。
4. Udemy「GPUプログラミング入門 - CUDAとOpenCLで学ぶGPUコンピューティング」
オンライン学習プラットフォームUdemyの動画講座。GPUの基本からCUDAやOpenCLでのプログラミング方法まで解説しています。
ただし、ご指摘の通り小中学生向けのGPUの仕組みを分かりやすく教える本は少ないかもしれません。GPUはCPUに比べると新しい技術なので、教育現場での普及はこれからという面があるでしょう。
技術の発展に合わせて、今後さらに分かりやすい入門書や子ども向けの教材が増えていくことが期待されます。ITリテラシー教育の一環として、GPUについても触れる機会が増えるかもしれませんね。
さて、このまえ「Elasticsearchのpython版を趣味で作ろうかな」と迷っていたが、作らないことにした。
やはりプログラミングは仕事で飽きるほどやっているので、楽しむための趣味にはならない。
趣味というなら、もっとこう、受動的なものがいいのだ。動画鑑賞、読書、ネットサーフィン、等。
なにかアウトプットをする趣味というのは、基本的にゴミやCO2を出しているだけだと考えていい。
いや、コンピュータを使っている時点で、すでにCO2を出しているか。書籍も資源を使っているしね。
料理ならば自分で摂取するのでまだ良いと思ったが、料理動画や画像をSNSでアップなんてことをすると、自称グルメのクソジジイに叩かれるのでやめたほうがいい。
ウォーキング、ランニング、筋トレ、ヨガ、水泳、など、一人でできる運動を趣味とする場合はその爽快感で完結するので社会との繋がりを意識せずに済む。
傷病手当で休んでいるときは脳トレとして数学を趣味としてやっていたが、仕事をしている生活だとそのぐらいの気力がない。
たまにゲストプレイでchess.comを使うこともあるが、本格的にやっていないのでずっと初心者レベルである。
自作のTODOリスト管理ツールを作って、少し仕事が楽になった。頭に「すべきこと」を溜めておかなくていいので、精神を浪費せずに済む。
あとついでに作ったポモドーロタイマーも、休憩のタイマーがなるたびに階段を登り降りしたり、ストレッチしたりするようにしたので腰痛が軽減したと感じる。
そういえば、朝食がここずっとTKGだけだ。
飲み屋でビール片手に、後輩に語りかける感じで話すよ。今日は、AIがどれだけプログラマーに影響を与えてるか、特にChatGPTについて話そうと思うんだ。
まず、ChatGPTってのはすごいよ。俺たちが昔必死に学んだことを、秒で答えちゃうんだから。でも、だからって俺たちプログラマーが完全に不要になるわけじゃないんだ。実際、ChatGPTが得意なのは単純で定型的なタスクなんだよ。例えば、基本的なデータ処理スクリプトとか、テンプレートベースのコード生成、単純なデバッグやエラーハンドリング、そしてドキュメント作成なんかはChatGPTに任せられる。
じゃあ、俺たちプログラマーの役割はどうなるかって?もっと高度な問題解決とか創造性が求められるようになるんだよ。複雑なシステムの設計や高度なアルゴリズムの開発は、やっぱり人間の得意分野だ。ChatGPTにはまだそこまでの理解力や創造性はないからね。
でも、これまでインターンやジュニアプログラマーがやってきた基本的な作業がChatGPTに取って代わられると、彼らが経験を積む場所がなくなるんじゃないかって心配もあるよな。これにはどう対処すればいいか?
まず、教育の場を再定義する必要がある。メンター制度を強化して、シニアプログラマーが直接ジュニアを指導するのがいいだろう。リアルなプロジェクトに参加させて、実際の問題解決を体験させるんだ。ChatGPTはサポートツールとして使えばいい。例えば、基礎的な質問にはChatGPTが答えて、シニアはより複雑な問題や高度な質問に対応する。
次に、ソフトスキルの育成も重要だ。チームでのコミュニケーション能力やコラボレーションスキルを磨く機会を増やすんだ。ペアプログラミングやコードレビューを通じて、実際に協力して問題を解決する力をつけることが大切だ。
それに加えて、高度な技術トレーニングも必要だ。オンラインコースや社内ワークショップを活用して、最新技術を学ぶ機会を提供するんだ。ジュニアプログラマーが自分で学び続ける意欲を持つようにサポートするんだよ。
シニアプログラマーやメンターには、新しいスキルセットが求められるようになる。技術的な専門知識はもちろん、教育能力やフィードバックの提供方法、対話スキル、プロジェクト管理能力、そしてモチベーションを高める力が必要になるんだ。俺たち自身も常に学び続け、適応し続ける必要がある。
だから、ChatGPTが登場したからといってプログラマーが不要になるわけじゃない。むしろ、俺たちの役割はさらに重要になる。AIと共存し、お互いの強みを活かしながら、より高度なスキルを身につけていく必要があるんだよ。
未来のプログラミングの姿は、AIと人間が協力し合うことで成り立つ。新しい技術を学び続け、常に自己研鑽を怠らずにいれば、どんな時代でも必要とされるプログラマーでいられるはずだ。AIをうまく活用しながら、俺たちの強みを最大限に発揮していこうぜ。
マッチングアプリで知り合った全日本妹選手権とか好きそうなオタクっぽいアラフィフで小太りの弱者男性の話です
その弱者男性の男の人はプログラミングに詳しくらしく、エンジニアとして働いてると話してました
私は大学のパン教でアルゴリズムをかじってたので、その時の思い出としてデータ構造が難しかった。いまだにラビンミラーの素数判定法について理解できてないです😅って話をしたんですね
すると、その弱者男性さん、鳩が豆鉄砲食ったような顔になりました。怪訝に思った私が聞いてみると、弱者男性さんなんと計算論も情報理論も知らないことが判明してドン引き
一体どうやってプログラミングのエンジニアしてるのかと思って聞いてみるとただ単に家電量販店の販売員パソコンのセットアップとかを担当してるだけってわかって唖然としました😰😰😰
プログラミング研修は見たら大体分かったから同期に教える側になってて、自宅では興味持ったReactとか学習してた。
グリゴリー・ペレルマンは昔から政治が嫌いだったらしい。
友人と会話して政治的なことが出ると「◯◯君、それは政治だよ」とピシャリと指摘したと聞く。
ミレニアム懸賞問題の論文を提出し、それが評価される過程での政治が発生したときは「俺は政治家じゃねぇ!」とキレたようだ。
賞金も辞退し、数学会から手を引いてからは、オペラの鑑賞を趣味として質素な生活をしているらしい。
誰も解けない問題を解き、arxivに成果を出すことで出版社に存在する政治を避け、数学的証明の正しさだけで勝利を勝ち取った男がペレルマンその人である。
このストーリーを聞いて私は、この人こそ尊敬に値する数学者だと思った。
研究助成金をもらうための政治的活動に熱を入れる数々の自称研究者とは格が違う。
数年前はgithubでOSSを公開することがそういう趣味だと思い込んでいたが、スター数で評価されるという政治が存在することに気が付き、消極的になった。
社会でなにか評価されようとすることが政治なのだろう。ポアンカレ予想ですら中華が業績を奪おうと政治工作したのだから。
私はプログラミングを趣味と仕事の両方でやっているが、コンピュータはインターネットを通じて社会と繋がりすぎている。
別にC#でLINQとか使ってるから入力が先に来るのも知っている
ただ、出力が最初に来るのが分からないって言ってるからいや、それプログラミング的思考の順序と同じやんってなるわけで。
だから、あのSQLが分からないって言ってるのSQLも別にプログラムの関数として考えるのであれば
で、別に何も変わらないと思うんだけど
Order byは出力じゃなくって処理に含まれると思うんだけど出力になるか?
出力順の設定は出力より前で実施されるのであればそれは処理だと思うんだけど出力になってるし。
漫画を追いかけるにはプログラミングも勉強しないといけないみたいな考えになる。
bookliveとかで、登録されている作品を全て一括表示するとそれはそれは何十万件と出るわけだ。
一個一個ざっと見でもサムネを確認して大雑把に内容を確認する、そのなかから気になったものをジャケ読みするという方針をとるにしても、しらみ潰しにそれを行うにはネットワークやデータベースの挙動に関する知識が必要だと知る。
これはブラウザ履歴にキーワードが反映された検索結果のURLがあってそこからダイレクトにアクセスしても検索結果が表示されることからも明らかだ。
これは裏を返せば、たとえば8時丁度に検索結果1ページ目を表示してから何秒か経って一通り見てから2ページ目を表示した場合と、同じ8時丁度に最初から2ページ目を表示するのとではそのページの検索結果としての構成が微妙でも異なる可能性があることを示している。
1ページに100件漫画を表示する仕様を採用していて検索結果が2000ページだとしよう。ソートは仮に人気順だとする。まあこれはしらみ潰しするうえでは絶対選んじゃいけないソート法なんだけど。
1ページ目を表示したその瞬間に、5ページ目に表示されるようになっている漫画があったとしても、5ページ目を表示したころには1ページ目とか4ページ目に表示されるようになってるかもしれない。普通に順番に次々ページを進めていって5ページ目に到達したときにはこのことに気づかないかもしれない。以降やっとの思いで2000ページ分確認を完了しても、ついにその漫画を確認する事なくしらみ潰しできた気になってしまい得る。
二周すればいいと思うかもしれないが原理上何周しようが同じように1ページ目に表示されなくてスルーしてたら2ページ目を表示したときには1ページ目に表示順位が変わっていたりして、結局「入れ違い」になり得る。
今のような具体的な話を聞いていると「別タブに1ページ目を表示しておいてじゃあページを進めるたびに1ページ目の表示を更新する定点観測をすればいいじゃん」と浅い考えを持つ人がいるかもしれないが、こうした順位の変動は2000ページの範囲のあらゆるページとページの間で起こりうることなので、そうした考えは全く通用しないことは、少しでもアルゴリズム的な思考を駆使できれば理解できる事だと思う。
最低でも新着順じゃなければならない。新着順にした上で1ページ目を定点観測。ページ進めているときに1ページ目の表示が変動したら、プルプッシュ?式の考え方なら直前に見たページにあったいくつかのデータが今のページに追いやられていることに注意すればいい。しかしこれで果たして完璧なのか?プログラマー的センスがまだまだ足りなすぎて盲点はないか(実際いずれは自動化を検討しているのでもろプログラミング技術の学びが必要)?Code CompleteとかClean Architectureとか読まなきゃだめちゃう?みたいなことを考えてしまう。
でもいざ漫画の造詣が深い人で「こういうことを難しく考えて」プログラミング身につけたしプログラミングが役に立った漫画オタクのきょうようだなんて言ってる人聞かないし、自分が考えていることの力点ずれてるだけでもっと気楽に生きるべきって気がしてしまう。
全然違うだろ
一方でCTOとかは情報系じゃ無いと成り立たないことが多いし現にIT系ベンチャーのCTOは情報系ばっかだよ
当たり前だけど情報の基本・応用を教えてくれるのは大学の情報系学部しかなくて
そのへんのプログラミングスクールとかはマジでゴミだから情報理論のエントロピーすら教えない
みたいなことを平気で言うからな
他にもコーデックに関する事とかネットワークに関する事とか情報系でしか教えてくれなくて
独学でやってる人も多いけど歴史とかまで含めて教えてくれるのは情報系の大学だけだよ
そして歴史を知っておかないとその技術が今後どうなるか見通しできないから
プードル プール プッシュ通知 プディング プリンセス プリンス プラス プラットフォーム プラズマ プラスチック プラネタリウム プラネット プリン体 プライド プライバシー プライベート プラカード プリーツ プリズム プリペイドカード プリマドンナ プリント プリンター プルタブ プルトニウム プレス プレゼント プレッシャー プレハブ プレー プレーヤー プレーオフ プレート プレートテクトニクス プレースタイル プロ プロフェッショナル プロファイル プログラム プログラマー プログラミング プロセス プロセスチーズ プロテスタント プレパラート プロット プロダクト プロテクター プロトタイプ プロムナード プロペラ プロポーズ プロレス プロレタリア プロローグ プロンプター プロデューサー