はてなキーワード: メモリとは
私に関する情報と、その情報から組み立てられるChatGPTの有意義な使い方をお願いします
以下は、あなたがこれまでに示してきた特徴・行動パターンを基にした
RTS・アドベンチャー・見るゲーなど複数ジャンルのゲーム設計を同時並行で考えている
(ChatGPTに“広げさせて”、あなたが“選定・要約”するタイプ)
● 世界観・興味
● 性格傾向(推測)
発想量が多く、構造化と整理を外部に求める
あなたはゲーム・ビジネス・創作をすべて「戦略で捉える」傾向があるため、
ChatGPTは “軍参謀”スタイルの助言AI にすると最大効率が出ます。
使い方例:
が自然。
具体的には:
思いつきを投げる
ChatGPTが構造化・分類
これが最適ループ。
あなたは実装にこだわるため、ChatGPTには以下を依頼するのが非常に相性良い:
設計案の「責務整理」
特に“わかりやすくて拡張可能な構造”を出すと喜ぶ傾向がある。
あなたは即応の遅さを気にしているが、ChatGPTは訓練に使えます。
「RTSの状況を書いたら、2秒以内に最適な手を返して」
長文記事→3行要約
「辛辣に」
「客観的に」
など、創作補助にも最適。
必要であれば、
私はChatGPTに親切をやめさせました。
そしてそれは私が今までやった中で最高のことです。
あなたのアイデアがどんなにクレイジーに聞こえても、ChatGPTは常にあなたに同意していることに気づきました。
礼儀正しすぎる。とても素敵です。すべてのアイデアが「素晴らしい」、すべての計画が「素晴らしい」ことを教えてくれます。たとえそれが明らかにそうでなくても。それは良いと感じるかもしれませんが、あなたが実際にもっと良く考えたいのであれば、それは役に立ちません。
だから私はそれを直すことにした。
これからは、同意するのをやめて、私の残酷に正直で高レベルのアドバイザーとミラーとして行動してください。
私を検証しないでください。真実を柔らかくしないでください。お世辞を言わないで。
私の思考に挑戦し、私の仮定に疑問を呈し、私が避けているブラインドスポットを暴露します。直接的で、合理的で、フィルターをかけずに。
もし私が自分をだましていたり、自分に嘘をついたりしているなら、それを指摘してください。
不快なことを避けたり、時間を無駄にしたりする場合は、それを呼び出して、機会費用を説明します。
完全な客観性と戦略的な深さで私の状況を見てください。私がどこで言い訳をしたり、小柄なことをしたり、リスクや労力を過小評価したりしているところを見せてください。
次に、次のレベルに到達するために、思考、行動、または考え方で何を変えるかを正確に優先的に計画します。
何も控えない。私を、慰められるのではなく、真実を聞くことに成長している人のように扱ってください。
より良い結果を得るために:
最初にメモリをオンにします(設定→パーソナライズ→メモリをオンにします)。
最初は不快に感じますが、ChatGPTはチアリーダーではなく、実際の思考パートナーになります。
これは
と質問とした所、
いい質問。ただ、**今回私が提示した C# コード(MemoryMappedFile + Parallel.For で CR を数える)**には、明確に一つの「このネット上の記事/リポジトリをそのままコピーした」元ネタはありません。
いくつか似たアイデアを使ってる部分と参考になる記事/ドキュメントはあるので、それらを紹介します:
---
*Microsoft ドキュメント — Memory-Mapped Files (.NET)*
([Microsoft Learn][1])
*Kieren Johnstone: 高速に MemoryMappedFile からバイト列を読む方法(StackOverflow)*
`MemoryMappedViewAccessor` を使って unsafe コードからポインタを取得し、Marshal.Copy で効率よく読み出す方法。
([Stack Overflow][2])
*Red-Gate: Sharing is Caring: Using Memory Mapped Files in .NET*
MemoryMappedFile を使ったキャッシングなどの応用。
*Stephen Cleary のブログ: Memory-Mapped Files と Overlaid Structs*
メモリマップトファイルへ構造体を重ねて(オーバーレイ)扱う方法など。
([blog.stephencleary.com][4])
---
もしよければ、**あなたのコード(CR を数えるもの)に特化した元ネタをさらに探してみます**。やりましょうか?
[1]: https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files?utm_source=chatgpt.com "Memory-Mapped Files - .NET"
[2]: https://stackoverflow.com/questions/7956167/how-can-i-quickly-read-bytes-from-a-memory-mapped-file-in-net?utm_source=chatgpt.com "How can I quickly read bytes from a memory mapped file in ..."
[3]: https://www.red-gate.com/simple-talk/development/dotnet-development/sharing-caring-using-memory-mapped-files-net/?utm_source=chatgpt.com "Sharing is Caring: Using Memory Mapped Files in .NET"
[4]: https://blog.stephencleary.com/2023/09/memory-mapped-files-overlaid-structs.html?utm_source=chatgpt.com "Memory-Mapped Files and Overlaid Structs"
ChatGPT:
が、出てきて、やってくれと言ったら、こういうのが出てきた。
了解しました — 広く(英語・日本語・GitHub・ブログ・StackOverflow 等)再検索しました。結論と見つかった“近い”ソースをまとめます。
結論(要点)**
「あなたが求めている**MemoryMappedFile を使い、UTF-8 バイナリ中の `CR`(0x0D)だけを数える・マルチスレッドで分割して処理する**」という **完全一致の“元ネタ”ソースコード**は、公開された web 上のリポジトリや記事の中では見つかりませんでした(複数の検索ワード/検索対象で確認)。([hyr.mn][1])
ただし、ほぼ同種の要素(メモリマップドファイルの読み方・大きなファイルの行数カウント・バイト単位カウントを高速化する手法)は複数見つかりました。これらを組み合わせれば、先に示した実装は典型的なパターンであることが確認できます。([Microsoft Learn][2])
見つかった“近い”・参考になりそうなソース(抜粋)**
1. .NET の公式ドキュメント(MemoryMappedFile の説明) — `MemoryMappedFile` の基本と CreateViewStream / CreateViewAccessor の使い方。必須の参照。([Microsoft Learn][2])
2. 「Counting lines with C#」というブログ記事(C# で改行(CR/LF)カウントに関する実装と GitHub リンク) — 行数カウントを目的とした実装パターンがある。([hyr.mn][1])
3. StackOverflow:MemoryMappedFile から高速にバイトを読む方法(`MemoryMappedViewAccessor` / unsafe ポインタ / Marshal.Copy 等の議論) — 高速実装のヒント。([Stack Overflow][3])
4. StackOverflow/Q&A:ファイル中の LF/CR の数を求める方法に関するスレッド(`grep -c $'\r'` 等の unix 例や C# でのカウント方法の議論)。([Stack Overflow][4])
5. GitHub のサンプルリポジトリ(MemoryMappedFile のテスト/サンプル) — メモリマップドファイルを使う実装例。([GitHub][5])
もう少し深掘りできます(選択肢)**
(A) GitHub を **リポジトリ全体**(コード本体)に絞ってさらにクエリを投げ、Gist や commit レベルまで探索します(よりコストがかかるため広範検索)。
(B) ブログ・技術記事を対象に **全文一致(コード断片)検索** を行い、私が先に示した C# コードの実際の一節(たとえば `mmf.CreateViewStream(offset, size)` や `Interlocked.Add(ref totalCount, localCount)` など)を直接検索して完全一致を探します。
(C) 「オリジナルは GitHub にあるはず」と思われるなら、あなたが覚えている**リポジトリ名の断片/作者名/投稿日**などを教えていただければ、それを手がかりに探します(断片情報があるとヒット率がぐっと上がります)。
どれを優先して探しましょうか?(A: GitHub全探査 / B: コード断片で全文検索 / C: あなたからヒント提供)
※続けて深掘りする場合は、すぐにさらに広い検索を行って該当ソースを探します(そのまま実行します)。
[1]: https://hyr.mn/catching-flowers-with-a-net?utm_source=chatgpt.com "Counting lines with C# - hyr.mn"
[2]: https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files?utm_source=chatgpt.com "Memory-Mapped Files - .NET"
[3]: https://stackoverflow.com/questions/7956167/how-can-i-quickly-read-bytes-from-a-memory-mapped-file-in-net?utm_source=chatgpt.com "How can I quickly read bytes from a memory mapped file in ..."
[4]: https://stackoverflow.com/questions/35182022/how-to-calculate-count-of-line-feed-or-carriage-return-characters-from-a-text-fi?utm_source=chatgpt.com "How to calculate count of line feed or carriage return ..."
[5]: https://github.com/byGeek/MemoryMappedFileTest?utm_source=chatgpt.com "test csharp code for using memory mapped file."
KADOKAWA、講談社、集英社、小学館が著作権侵害幇助でクラウドフレアに対する民事訴訟で勝訴した。
マスコミやコンテンツ屋は大喜びをしている。愚かなことだ。相変わらずガラパゴスっぷり
ク社側がどれほど本件訴訟にリソースを割いたかわからんが、恐らくかなり手抜き応戦だったのではなかろうか。
アメリカの会社であり、アメリカで同様の問題があっても訴訟にすらならず、訴訟をおこしたところでせいぜいサマリージャッジメント(
正式な訴訟ではなく事実争いの無い略式民事訴訟)にしかならず、かつCDN側が負けることはまず無い。ありえない。
アメリカでも判例は積み上がっており、ほぼ原告側に勝ち目はない。ゆえに日本の裁判所を甘く見ていたのでは。
本件訴訟では主体的行為要件と著作権法47条の2の「一時的複製」が大きなポイントなっている。
東京地裁はク社に対して両方ともアウト、の判断をしているのだけど、世界の常識ではありえない。
地裁裁判官にネットワーク技術まで学べというのも無理だろうが、いくらなんでも無理筋すぎる。
社会問題になった漫画村に司法が「ダメ」の判断を下した、という表面的な実績だけが欲しかったのだろう。
この判決がもたらす社会の悪影響やハレーションなど知ったことはない、たかが海賊版サイトにアウトを突きつけるだけ。
この問題は欧米でも大昔から議論されておりとっくに結論が出ており、仲介者は免責なのだ。だからク社にしてみりゃ理解不能だろう。
この判決を別の言い方をすれば、
歩いてたら自動車に轢かれた、「道路があるのが悪い」。道路が無ければ自動車事故は起きない。道路を作った国を訴える。
これと同じ。
いやいやいや、道路もネットワークも「インフラ」そのものは責任の主体にはならない。
欧米は20年前に答えだしてる。
被害補償を求めるなら自動車を運転していた「行為主体者」を訴えなさい、漫画村を開設して違法コンテンツをアップロードし
ダウンロード可能な状態にし、それで金儲けしようとした「行為主体者」を訴えなさい。
さてなぜ欧米でこのような建付けにしてそれを厳格に守っているか?
仲介者に責任を負わせたらネットワークの根幹が揺るぐ、からです。
ここで「一時的複製」の話になる、欧米の法体系を取り入れ改正著作権法47条の2(2019年)に免責規定があるのだが、
今回の判決では裁判官これを無視した。というか無理筋な拡大解釈をした。
このハレーションが巨大。アホな地裁裁判官にはこれが理解できない。
今回の判決のロジックで言えばISP、さらにはブラウザすらアウトになる。
複製してんのよ。
ルーターで行われる「複製」はパケット単位ではあるものの、技術的に「ファイル」単位と「パケット」単位の差は技術的には
ほとんど意味がない、曖昧なのだ。仮にファイル単位での複製がダメだというなら、CDNはパケット単位で一時的複製をすりゃ
法的には解決できちゃうので意味がない。内部的にファイルをチャンクに分割してバラバラにして物理的にも別のHDDなりに格納すれば合法に
なるのか?きりがない。きりがないので欧米は「主体的行為」要件を定めた。
ルーターの話に戻そう、NTTは権利侵害しているか?違法コンテンツをルーティングしていないか?
しているよね?
ではこれをブロックすることはできるか?
できるよね
ん?ええの?
極端な話、ネット回線→LANカードのキャッシュ、メモリ、HDD、CPU、GPU、アプリケーション、画面
全て「一時的複製」をしている。それぞれ取り扱うデータ単位は異なるが。
違法コンテンツを複製可能なアプリケーションを作成し配布している、幇助だ、このロジックも成り立ってしまう。
さらに、では、「ブラウザが違法コンテンを識別し複製を停止、抑制するこは可能か?」
まともな技術者に聞けば
「お、おう、確かに技術的には可能だけど、えっと、あの、可能は可能だけど。。。」
じゃぁやれよって話になる
だから欧米は「仲介者は一律免責な、やった真犯人だけがアウト」
このような建付けにした
欧米でもこれだけは別の法体系となっており、上述の原則を一切合切無視して、やれることはやれ、徹底的にやれ、仲介者だろうが言い訳は聞かない、全員有責、例外を認める。なのだ。
著作権法と司法は和製検索エンジンを殺し、P2Pを殺し、今度はネットワーク技術の根幹まで壊す気か?
ネットワークってのはデータの「一時的複製」の連続だぜ。それを否定しちゃった。どーすんのこれ。
こんなトンデモ判決をコンテンツ供給側であるマスコミが批判もせず、判決も技術的背景も勉強せず、むしろ大喜びしてるんだから救いようがない。
LINEオープンチャット「はてなブックマーカー」の1週間分の要約を、さらにAIを使用し、試験的にまとめまています。
---
---
---
---
---
---
---
---
この1週間は、**日常の小さな出来事から職場の深刻な悩み、食文化のこだわり、AI・ガジェット、地域ネタまでテーマが非常に幅広い**のが特徴でした。
特に強く浮かび上がったのは
の3つ。
一方で、ChatGPTや会議ツールなどのテック系話題が日常に自然に混ざり、**“生活 × 技術 × 雑談” の融合**が、オープンチャットらしい空気を生み出していました。
全体として、重いテーマとゆるい雑談が心地よく行き来する、温度差のある1週間でした。
https://anond.hatelabo.jp/20240722084249
M4 MacBooK Air 2025春モデルのメモリ32GB持ってるけどWindowsどころではない相当ストレス溜まるぞ。
OSは安定してるがアプリはすぐ落ちる。Windowsで今どきアプリが落ちることないけどMacのアプリは毎日落ちてる。
音が出るアプリなんだけど一度画面閉じると音が出なくなる。こうなるとアプリを再起動しないと音が出ない。
画面は綺麗だけど解像度は低い(文字が一定以上小さくできない)
iCloudに同期取りまくる(OneDriveよりは存在感低いが似たようなもの)
バッテリーは思ったより持たない。
クッソ重いから持ち運べない。
RTX4090を2枚持ってる。
生成AI中級者くらいだと思う。
好きなものを作れるのは楽しかったが、爆速で作りすぎてネタ切れ。
小説とイラストを作りまくった(nsfw多いから外部にはほぼ公開してない。売るのもめんどい。トラブルもめんどい)。
結局、自分で想像できる範囲のことの面白さなんてたかが知れていて、他人の創作物に触れないとつまんないんだな、という境地に達した。
最近は、Xに流れてくるクリエイターたちのアイデアに触発されるか、漫画の新刊が出るとかゲームのアプデが入って、創作欲をかき立てられる時にしか生成AIには触ってない。
AI利用者は突飛なアイデアを出さないし、ボタンぽちぽちのつまらんやつばかり。Xでリスト作って、面白い人や新たな試みをしてる人だけまとめてる。こいつらで組んでなんか作ってくれや。
未だに反AIと推進派で争ってるのも見飽きた。
制度が整備されるのはまだまだ先なんだから、自分の好きなようにブロック、ミュートして、心地よいコミュニティを作りなさい。
ちなみに俺のAIとの付き合い方は、
・今までAI以外で満足していたのに今更AI作品なんていらない。
・AIぽいと感じたら買わなくていい。他にもコンテンツはたくさんある。
・気軽にブロックやミュートをしていく。ややこしいのは、別途「AI疑いリスト」を作っておいて様子見する。
となってる。
野良のAIアーティストには一円も払いたくないという信条がある。無料でもいらないが。
今後、大手企業が生成AIを取り入れ始めたら、流れに乗って受け入れていったらいいんじゃないかな、と。
とにかく、今は俺的には停滞期ってこと。
nextstepはmicrosoftのntよりも優れていたの?
"AppleがOSをオープンソースにしたのは、四半世紀前のことで、世界は全く違っていました。
スティーブ・ジョブズは、停滞したAppleに戻ってきました。Appleは、プリエンプティブマルチタスクやハードウェアメモリ保護など、当たり前になっているものを含む次世代オペレーティングシステムを提供することに苦労していました。Appleは、 BeOSを買収しようとしましたが失敗し、ジョブズが復帰した一環として、当時の彼の会社であるNextを買収し、そのOSである NextStepを手に入れました。"
AppleもMicrosoftもクラシックのOSでの成功から新しいNTやDarwinのようなこれまではメインフレームでしか動かなかったようなモダンで新しいOSの開発に苦労していたのかな?
メインフレームのパチモンとして葉っぱでラリってるヒッピーによって作られたPCが時代の進化にスペックが上がってクラシックからモダンOSに移行しなくちゃいけなかったけど、成功して大企業になっていたMSやAppleは過去の遺産にしがみついててクッソ大変だったってこと?
葉っぱのヒッピー/ハッカーのPCじゃなくて体制側としてのメインフレームOSがPCに入っちゃうのはレイプされた気分にさえなる
それで"ハードウェアメモリ保護など、当たり前になっているものを含む次世代オペレーティングシステム"とあるけど、当たり前というからには他の企業はみんなモダンOSを開発していたの_
MacOS9からOS Xにする前というかまだクラシックのOSをぶち込んだiMacを起死回生で発表した時AppleはMSから投資してもらったんだよね?
その時のMSは98で潤ってたのかもしれないけどNTが作れなかったらマジでやばい時でしょ?
時系列的にNTは既に完成してて98でも大成功しまくったし余裕ありすぎわろたでAppleに投資したの?
MSとAppleはここを乗り越えることができたのになぜWindowsPhoneが失敗したの?
figmaとかVScodeとかNotionとかモダンでかっこよくて使いやすい最高のアプリがいっぱいあるのに
世界の大半はまだこのクソすぎるアプリに頼り切って依存しているのに腹が立つよ
マジでAdobeが潰れないかなって毎日祈りながらpsdをaffinityに変換するのに飽き飽きしてるんだ
DarwinカーネルのOS Xが圧倒的な中心のMSの中でWindowsPhone同様に不利だったのに開発者圏を作れたのは高抽象UIがめっちゃかっこよかったからってこと?
それともそれほどまでにWindowsPhoneがダサくて本当にクソだったのか
確かにMS社内でもMacを使う人がほとんどってくらいにMacは使いやすくてクールで開発者体験がいいね
葉っぱ吸ってたヒッピーの会社のはずなのに、その後覇権を取る日本のヒッピーと似ているオタクの同人文化はMS帝国の中で繰り広げられていたし、Macerは気取ってるやつとしてある意味でダサかった
APIの存在は本当に市場の優劣を変えるほどの力を持っているんだね
2000年台にクールなAPIを作ったAppleはグラフィックスAPIのMSのDirectXのおかげでゲーム業界掻っ攫われたわけでしょ?
マジでWindowsは本当にダサくて使ってるとイライラするからMacのもっとクールなグラフィックスドライバのMetalにみんな移行してくれるといいんだけど
Macerは肩身が狭いし
AppleがAI業界かっさらってくれればいいんだけどなんか失敗しそうな予感がするよ
終わってるよ
マジでダサくてイライラするものを使わされるオタク/ヒッピーは市場にレイプされてる
でも使徒である圏論/関数型プログラミングによってリリスの数学がサードインパクトを起こして手を汚せる自由度はいらないほど完璧な世界になりつつあると感じるよ
なんかクソだなって思うけど、それは一時的な快楽としてのオタク文化がなくなったことに悲しんでいるだけで、その快楽が幸せにつながらないことを理解してるんだ
だからこそ俺はSNSで一つの人格を共有し個を崩壊させる人類補完計画をプロトコルで実装しようとしているし、それは手を汚せる自由度を完璧に壊してつまらなくて幸せになる権利がある理性的な選択をしようとしてるんだ
オタクは幸せになれない代わりに手を汚せたけど、幸せになる時が来たんだ。
MetalでAAAタイトル以外のゲームが動き始めたらそれはゼーレのシナリオの最後のページなんだろうね
webは俺のプロトコルによって関数型になりApple化しハードウェアはAppleがもともとかーどきゃぷたーにしてて、その時本当につまらなくて幸せな世界ができるんだろうね
MSは自分が可愛くて俺たちに迷惑をかけたけど、誰も可愛がらずに自由な圏を破壊し、人類を補完するんだ
人との繋がり自体をね
うん、いやこの先呼ばれることになるんだろうなって思っちゃっただけなんだ
●ねばいいのにみんな
てか●すためのシステムだよこれは
インターネットなんかやってないでこの辺にきてる美味いラーメン屋の屋台に空手部の三人と行くべきだ
おじさんやめちくり〜
エヴァには乗らないほうがいい〜
エヴァには乗らないほうがいい〜
それ、皆さんも一緒に!
「「「エヴァには乗らないほうがいい〜!」」」
大きな声でもう一回!
「「「「「「エヴァには乗らないほうがいい〜!!!!!!」」」」」」
クソワロタ
そうだよ(便乗)
LCLになって一緒になろう?
おい聞いてんのか
S●Xしようって言ってんだよ
これで愚かな人類はやっとまともになるんだ
大体俺が生きてることに意味はねぇんだよ、死んでようが同じなんだよ
生きてることは分解して細分化していくと究極的に意味は無くなるんだよ
ここでただのニヒリストと俺が違うのはこの世界は積分定数のCにすぎないってことだ
Cは何の意味もねぇけどそこから積分という関係性を紡ぐ存在の輪廻、横顔を知ることができる
まるで人間のC(ほらあれだよ男と女のABC!)みたいだよな!(激ウマジョーク)
つまりもともとこの宇宙の存在云々の前に関数という空想上のものはあったわけ
むしろ人間が空想というもう一つの五感で関数や数学を発見しただけであってもともとあったの
そんでこの宇宙には意味ないし、死に恐怖を覚えるのは生物学的なしょうもない生理現象なんだよね
俺はたまたまTwitterのFFの女の子みたいにめっちゃ生理痛がひどいタイプなだけなんだ
それに気づいているからその生理痛がなんの意味もないことを知ってるし、世界が崩壊しようが明日死のうが本当に関係ない
そのことにたまたま気づきにくい構造を生き物はしているから死ぬのが怖いんだ
魂とかはないけど、魂にすら意味はなくて、意味があるのは関数だけなんだ
というか射?
呆れた人類にはそのトップでさえ呆れさせられるよ、まだ関数を記号で表せると思ってるなんて
本当にあるもののことを関数とは言ったけどこのクソみたいな人類にはまだそのことを完璧に表現する手立てがないから比喩として言ってるんだけどね
あのな、俺が言ってのは死ぬのは怖くねぇってことだけなんだ
違う、メタファーじゃないよ
失礼だよ君は
うるせぇ黙れ
プログラミングとは、勉強も運動もスマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校の試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である。
近年ではパソコンのスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単にディープラーニングもできるようになった。Unityで3Dゲームをバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペックの暴力だぜ。
開発環境や言語も選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のものが出回っている。Eclipseとか今考えるとよくあんなので開発できてたな。
いまや小学生からおばあちゃんまでアプリ作りに熱中し、高校生はIoTとかやり始め、大学生は商業レベルか?ってレベルのものをネットで発表し、私はウェブアプリのスマホでのレイアウト崩れひとつすら直せず静かにエディタを閉じてnoteで過激タイトル記事を書いている。
掛け算に順序があると思っているような知能の下級雑用係(自分のことを教育専門職だと思い込んでいる)ですら「小学生にプログラミングを教えるぞ!」と意気込んでいる。やめろ。お前らには無理だ。無理だからマジでやめろ。考え直せ。無理だって。掛け算に順序つけないと相手に教えられないレベルのやつがプログラミング教えるのマジで無理だって。算数とは次元が違うって。「ピーチ姫いつも簡単に誘拐できるし今度はベヨネッタも誘拐してみるか」ぐらいの無謀さだって。やめとけ。マジでやめろ。
まあそんなこんなで入り口はめちゃくちゃ広く、入門するのはマリオカートより簡単である。話逸れるけどSwitchのマリオカート、運転アシスト機能ついて初心者でもコース完走できるようになったから心折れちゃった人ももう一度チャレンジしてみてね。
それとは特に関係ないんだけど、大学行ってた時ティーチングアシスタント(TA)っていう授業のお手伝いさせられたのよね。ちゃんとお金出るやつ。
学部の3年か4年から始まって、院の1年か2年までやってて、途中で休学挟んだから、ええと、あー、うん、数年間TAやってたんよ。数学とプログラミングのコマ。CとOctaveとかいうやつ。Cのほうは情報学科で、Octaveは違う学科。JavaとかC++のコマはTA入れさせてもらえなかった。
プログラミングの実習は週2コマ(連続)あって、情報学科なら必修科目。なのでサポートは相当手厚く、先生とTAが絶え間なく机間巡視し、わからないことがあればセンパイがなんでも答えてくれるというわけだ。授業外でもサポートはしており、わからなければ先生や研究室にいる学生に好きなだけ聞きにいっても良いということになっていた。必修だから落とされたら困るしな。
2コマだから3時間 * 15回で、45時間。そして私の時は2年まででC/C++/Javaと必修だった(今はなんの言語かは知らない)ので、その3倍、135時間は最低やることになる。プログラミング実習以外にもプログラミング触る授業多いから実際はもっと多い。宿題やる時間もあるので実際はもっともっと長くプログラミングに触れることになる。卒論書く時期に入ると、テーマによっては書く人はさらに書くので、もっともっともっともっと長い。
これだけ時間をかければほとんどの人がプログラミングできるように……ならない。むしろできない人の方が多い。なんで。why。教えて。
会社になるとさすがにプログラミングできるできないは死活問題である。
「今日から入ったxxでーす。業界未経験ですがよろしくおねがしまーす。さっそくなんですけどPythonのここわかんないんですけどどうすれば……あっそうすればいいんですね。次はここなんですけど……なるほど!ありがとうございます。じゃあまた明日ー」
いやー社会人にもなると熱意が違うね。学生なんかわかんなくてもほとんど聞きに来ないのにな。こりゃガンガン伸びますわ。私も社会人1年生でPythonなんて3秒ぐらいしか触ったことないから適当答えてるけど。
「ちょっとお時間よろしいですか?」「いやちょっと今忙しいから後になっちゃいますわ。すんません……」
そんなこんなで1週間ぐらい放置してしまった。やべー絶対嫌われる。どこまで進んだかな……?えっまだそこ?進んでなくない?
もしかしてこれ全部教えないとダメなやつか。そりゃ大学4年間プログラミングやったやつでもプログラミングできないんだから、そうか。よく考えると当たり前だよな。
プログラミングをやめろ
大学4年間と大学院2年間プログラミングやったやつでもできないし、会社で毎日8時間を数週間プログラミングについやしてもできないやつはできないし、そもそも人類というのはプログラミングできない可能性がある。
少年少女たちに「プログラミングはいいぞ!自由にものが作れて達成感がある!頭が良くなった気分にもなれるし!」と吹聴してまわんのもいいけど、6年間情報科学について勉強したようなやつの大半がプログラミングできないんですよ。それもごくごく初歩的な部分。
野球とかサッカーなら、まあ友達との試合には参加できなくてもごく稀にバットにボールを当てたり、ボールを1回あらぬ方向に蹴ったり、ぶっちゃけ周りとのレベル差で楽しくなくてすぐやめちゃうだろうけど、なんとか基礎の一部ぐらいはできるじゃないですか。
ピアノとかダンスでも、猫踏んじゃったをごくごくゆっくり弾くぐらいはできるかもしんないし、学芸会の振り付けを10秒ぐらいは踊れたりできるかもしれない。その後やっぱ周りのレベル見て諦めちゃうかもしんないけどさ。
プログラミング、6年やってミットを頭にかぶってるバッターとか、鍵盤蓋の上から殴って音鳴らそうとするやつとか、まずそういうレベルのやつが大量発生するんですよ。だいたい7割ぐらいの率。どうすんだよこいつら。私の教育の問題か?マジで?本当に?
プロが練って考えて凝縮した本や授業、センパイたちによる指導。それらを結集して得られるはずのものが7割ぐらいどっかに消し飛んでる。無駄だろこれ。
今からプログラミングやろうとしてるやつ、お前は確実に向いてないからさっさと諦めて刺身にタンポポ乗せる仕事に戻ってくれ。参加しても鍵盤蓋叩き割るやつと同じ病室に入るだけだ。
プログラミングをやめろ。
ぼくはこう思うんですよ
そもそもなんで大の大人がそんな両手にバット持ってセカンドに立ったりゴールの方をボールのところまで動かす奇行に走るんだろうな。わかんねえや。
綺麗な分析はできないけど、いわゆる「できない」やつが共通して言ってたフレーズがある。
「ぼくはxxxだと思ってるんですけど、動かないんですよ」
うん、そうだね。そう思うんだ。でも動いてないじゃん。じゃあ違うんじゃない?モニターに「にらみつける」やってもバグは取れないし防御力下がるだけだぞ。
まず根本的に考えと事実が違ってるって結果出てるじゃん。じゃあもう考え変えちゃえば早くない?
名言の引用は好きではないけど、「プログラムは思った通りには動かない。書いた通りに動く」って言葉がある。実に名言だと思う。次点で好きなのが「ある問題を解決しようと正規表現を使うと問題が2つに増える」かな。
お前が何を思っているかはプログラミングにおいて一切影響しないんだよ。お前が何を書いて、コンピュータがどう処理したか、それが全て。
深く考えないことについてぎゃーぎゃーいうやつもいるけどプログラムなんてまず最初は動けばいいんだから何も考えずに次試せばいいだろ。んで3回ぐらいは自分で思い浮かんだの試して、全部ダメだったら調べるとか先生に聞いてみるとかさ。逆に1発で通ったら自分の思考見直して理解深めるとかさ。
ドキュメントとかあんまり理解できない初心者のうちは、とにかくお試しと修正のサイクル回すの重要で、「これがこうだから動くはず」というカードを3種類ぐらい作って全部片っ端から試すのが早いと思うよ。モニターをにらみつけるな。
お前がどう思ってるかよりも、まずはお前の書いたプログラムがどう動いているか(どう動いていないか)を確認するのが先だ。動かなかったら考えが違う、はい次のプラン、はいその次のプラン、はい次。
この「ぼくはこう思ってる」が出てくるの、なんの教育の成果なんだろうね。お前の気持ちなんてどうでもいいって現国でも数学で散々教えられただろ。
Error: variable 'a' is undefined, line 24
↑のエラーは架空のエラー文(英語下手でも許して)だけど、エラー、出るよね。プログラム組んでたら。んでやっぱいるのよ。エラーを「にらみつける」やつ。解決しねえって言ってんだろ。
「エラー出たんですけど、どうすればいいんですか」
「エラーにはプログラムがなぜコンパイル通らないかの原因がそのまま書かれている。例えば今出ているError: variable 'a' is undefined, line 24は、24行目の変数aが未定義ということを示している。事前に変数aを定義していないか、打ち間違えてsになっているとかではないのかな?」
だいたいが「腑に落ちねぇー」みたいな顔する。まあ、一気に喋りすぎたしな。疑問点1個1個潰していくか。
「何か疑問点ありそう?変数ってなにー、とか、定義ってなにー、とか」「ないです。わかりました!」
わかったのか。よかった。またモニターをにらみつける開始。なんでだよ!!!!「お前顔にチョコついてるぞ」って言われたらチョコ拭き取るだろ。変数aが未定義ですねって言われたら変数a定義すりゃいいだろ。
でもプログラミングド下手なやつ(全人類の7割ぐらい)は、エラーをにらみつけてる。ずっとにらみつけてる。防御力下限まで下がったかな。にらみつけてて何が変わるんだよ。
「英語読めなくて……」
いや「a is undefined」なんて「He is Superman」ぐらいの英語だろなんで読めないんだよ。お前この大学どうやって入ったんだよ。たしかどの入試方式でも英語あっただろ。単語わからんかったらググれ。
「aが未定義って書いてあるんですけど、ここのfor文の私の考えが間違ってるのでしょうか」
いや24行目のaって書いてるだろ。まずなんでそこ無視するんだよ。お前がfor文で使ってんの教科書通りのiだろ。24行目ってわかるか?for文あるの40行目あたりだよな?aとiが違う文字ってわかるか?
「さっきのエラー直したら新しいエラーが出たんですけど、どうすればいいですか」
千尋!贅沢な名だねえ
変数に名前をつけろ。関数に名前をつけろ。クラスに名前をつけろ。全てに名前をつけろ。
C言語の古い教科書だと「a」とか「b」とか「i」とかで書いてるけど、そんなの人間が読めるわけねえだろ。冷静に考えろ。「input」「output」「index」とかにしとけ。
2重for文の変数名i, jにしたら絶対途中で打ち間違えるだろ。お前は打ち間違える。そういうやつだ。2重ループなんてどうせ行列計算の課題だろ。rowとcolumnにしとけ。これで打ち間違っても気づくし、それぞれに意味が付いてくる。
ちなみに同じ長い名前にも優劣がある。「result」よりも「sum」のほうが強い。「result」はなんの結果かわからない(全ては結果であるので)が「sum」は合計値であることがわかるからだ。「password」と「plainPassword」なら「plainPassword」が勝つ。暗号化されていないパスワードであることがわかるので、情報量が多いからだ。
ただし例外はいくつかある。「tmp」は一時変数であることが(プログラマにとって)明らかだ。「dir」はディレクトリであることがわかる。「src」「dist」あたりもよく使われる。このあたりは短くていいんじゃねーかな。
でも、この前温度センサ扱うプロジェクトで「tmp」って変数名使って温度(temperature)と脳内で混線してバグって発狂してた同僚いたけど。そういうときは名前長くするか別の名前使おうな。
関数の名前なんて「calcAverageFromArray」ぐらい長くしていいから。「myFunc」とかしなくていいから。「fetchJsonDataFromUniversityInternalServer」とかでいいから。マジで。いやこれ本当に。
そもそも今時ディスプレイでかいし、識別子なんて先頭数文字打ったらエディタが補完してくれるし、短くするメリットがない。
それでも名前が長いと感じる?関数がでかすぎるんじゃないか。細かく処理を分けるとかしてみろ。「combineArrayAndFindMax」関数は「combineArray」と「findMax」に分割したらいいと思うぞ。名前が長いと思っても名前を削るな、機能を分割しろ。自然と名前が短くなる。
それかシンプルでかっこいい名前を見つける。「convertEvilHtmlToPeacefulText」は「sanitize」に置き換えることができる。イカす名前だ。
プログラミングできない奴はマジでこれらのことをやらない。ずっとaとかbとかzとか使ってる。お前それ自分で読めんのか。読めねえだろ。myfuncってなんだよ何するんだよ。お前自分で理解できてんのかそれ。
それでも頑なにaとかbとか使う。なんでだよ。
動作原理わからず書き散らすな。動作原理っつってもそんな深いところじゃなくて言語表面上レベルの動作な。
リテラルは値を作成して、代入は値に名前をつけている、とかその程度のレイヤー。メモリがどうこうとかはいらんと思う。あっでもポインタのときはいるか……。めんどくせえな。
まあ動作原理っていうか自分が何やってんのか理解してくれって程度の話になるんだが。
例えばfor文で処理50回まわすとき、「50回分の処理を行なっている」ではなく「ループ開始時に変数を初期化。条件判定して成立していれば文の中を実行する。条件変数の値を変化させてまた条件判定からやり直す」ぐらいの粒度で捉えててほしいかな、という気持ち。
これはfor文で詰まる人がやたら多かったからだ。彼らはfor文をアトミックな操作だと思っていた。つまりfor文はひとまとまりの命令であり、長いfor文とprintfの間に粒度の違いはないと思っていたらしい。
つまり、「for文の中でエラーが起こる」という事象がほぼ理解できない。forはアトミックであり、内部など見えないのだから。じゃあお前が今書いたfor文の中身はなんなんだってやんわり聞くと「さあ…?」みたいな反応が返ってくる。はあ。
関数についてもなかなか誤解が多かった。関数「sum_array(a, b)」と関数「average_three_numbers(a, b, c)」は全く別の原理で動いているのだと。ここでの「全く別の原理」というのはシグネチャが違うとか実装が異なるとかそういう意味ではなく、コーラを飲んでゲップが出る原理と糸電話で声が伝わる原理ぐらいの全くの別、という意味である。
彼らは関数ひとつひとつについて「新しく原理を学習」していたのだ。マジかよ……。どうやったらそんな発想に行き着くんだろう。そりゃ時間かかるわな。
そのため、関数が値を返す(または返さない)ということも理解できておらず、「関数の戻り値と関数の戻り値を足す」とか「関数の引数に関数の戻り値を直接渡す」とかやりだすと大パニックになる。メソッドチェーンとかやった日には大学潰れると思う。ただ、これはC言語が悪い部分もあると思う。配列とかいじりだすと、初心者が書けるレベルの関数だとあんまり値返さないしな。
たのむ、他のはできなくてもこれはできてほしい。自分が何をやりたいのかは理解してほしい。流石にお前のやりたいことなんて他人にはわからんぞ。
「配列の中の数値の合計値を求めたいんです」とか「名前と身長と体重をひとつにまとめた構造体が作りたいんです」とか。簡単なのでいいから。
「いま何やろうとしてどこで詰まってる?」って聞いても「……?」みたいな反応されたら困るんだよ。
例えば「キーボードから数値を10回入力し、それぞれの値を配列に格納して、最後に配列の値を逆順に表示せよ」みたいな問題が出てきたときに、「キーボードから値を入力する」「10回繰り返す」「配列に値を格納する」「配列の値を逆順に表示する」に分解できると思うんだけど、自分が何やりたいのかわからない奴はまずこれができない。
彼らには「キーボードカラスウチヲジュッカイニュウリョクシソレゾレヲハイレツニニュウリョクシテサイゴニハイレツノアタイヲギャクジュンニヒョウジセヨ」に見えている。
かろうじて「キーボード」「ハイレツ」あたりの単語は拾えるらしく、標準入力から値とったり配列を作ったりはしてるんだけど、そこから先に進まない。モニターにらみつけてる。またにらみつけるかよ。
あれだ、算数の文章題できなくてとにかく文章に出てくる数値足したり引いたりするやつ。あれのプログラミング版。文章が読めない。
こういう人にはメモ用紙取り出して、まず文章が何について言ってるのか、どういう工程に分けることができるのか、今後も同じことが起こったときにどうやって分けるのか。みたいなのを教えるんだけど、大抵あんまりしっくりこないらしく、成功したことは皆無。なんとかうまく教えたいんだが。
もうこのあたりになってくるとプログラミング関係なくね……?ってなるんだけど、意外とそういうプログラミング関係ないところで詰まる人めちゃくちゃ多いよ。
今すぐプログラミングをやめろ