はてなキーワード: EMACSとは
人それぞれとしか言いようが無いだろ。
出来る人はこだわろうがこだわらまいができるし、
出来ない人はこだわろうがこだわらまいが出来ない。
流石にメモ帳でグイグイ書いてく、ってのとそれなりのエディタで書くのではやはり時間が違うだろう。
Unix系のコマンド全く知らないでなんかいちいち手ですべて見て検索したり手で書き換えたりするのは
もう愚の骨頂だからそれは覚えろ、と言いたいけど。
だけど、vimでもemacsでも、ものすごい勢いでプラグインとか設定を自分ナイズしてる場合は、
そもそものデフォルトの状態と実際にかかる時間がどれだけ違うかは、上のエディタのさほどでは無いでしょう。
大概は、「慣れ」程度の話。勿論、速くはなると思うんだけど、そこまで違わないかな、と。
周辺機器の話になれば、それこそ、普通のキーボードとHHKとの差は?って言われたら、直接的な速さには殆関係ないし。
ただ、長期的な疲れ、ってなると、差は出るかもしれないけど。
ま、でも、そこまでキーボード打ちっぱなしのプログラマーってそもそも優秀なのか、って話になるわけで。
最低限、Emacs的なキーボードショートカットでの移動ができれば良いかな。
上下左右の動きとか、行頭、行末への移動とか。
Macだと普通のエディタでも移動だけなら使えるし、割と充分。
俺は道具には拘りないけど、それはデキるからじゃなくて事細かに道具を使いこなすことができないからだな。
道具の違いで100倍の生産性が違う、Vimを使いこなす俺カッケーを信じてる奴は
エンジニアとしての伸び代を感じない
これは益田がEmacs使い、もしくは他のエディタ使いでvimerをディスりたいだけなんだと思うけど、
ここで言うのは例えば他でも出てる様にHHKじゃないと嫌だ、みたいな出来上がった道具に付いての話だ。
Vim使いを称しながら単にhjkl移動だけでカッケー、と思ってるならそれと同じレベルだけど、
色々自分で設定しながら生産性を高くしてこう、ってのはある意味増田が言ってる
に繋がるわけだよ。てか、vimでもemacsでも設定ファイルなんてプログラミングみたいなもんなわけで。
そこでとことん追求できる姿勢、ってのはそれはそれで意味あると思うけど。
勿論、他に仕事に必要な事を放り出してvim設定に没頭して他の人に自慢してるようなのは論外だけど、
現在二十代後半の自分は小学校でのコンピュータ教育が始まったタイミングの世代です。
始めは「学校へコンピュータ導入しました」みたいな申し訳程度な感じだったと記憶しています。
小学校でのコンピュータ教育の内容としてはCD-ROMを配布され、ODへ挿れるとソフトウェアが書き込まれたISOが自動起動して、そのソフトウェア上でコンピュータを学ぶという形式だったはずです。
学習ソフトウェアは勝手にフルスクリーンになるわけですが、今思えば無知な小学生がOSの設定を変えてしまわない配慮だったのだと思います。
実はこのあたりの記憶は曖昧なので学習ソフトウェアの内容は以下のような感じだったはずです。
これ以外もあったような気がしなくも無いですが、前提として私は小学生男子なので興味のないものは記憶からすっぽり抜け落ちている可能性が高いです。
この中で一番出来が良いのはパラパラマンガツールで、おそらくはプレゼンテーションなどを学ばせるためのものだったのでしょう。
時代を考えるとFlashが出始めの頃でありユーザーインタフェースや機能はFlash作成ツールから影響を受けていたようです。
ポケモンの戦闘シーンを完全再現したことでクラス内でヒーロになったのでこのツールには思い入れが深いですw
感覚として元も近いFlash作成ツールはParaFla!で、ParaFla!とペイントを足して2で割ってタイムラインシーケンスが無い感じでした。
地図を学ぶゲームも比較的良い出来で、ユーザーインタフェースはシムシティな感じでしたね。思いっきり影響を受けてるようでした。
確かストーリー仕立てになっていてクリックしてるだけで進み、地図記号とか学べるんじゃなかったかなあ?と記憶が曖昧です。
この学習ソフトウェア、どうコンピュータ教育に活かされていたか?と言えば、何にも活かされていませんでした。
教師は軽くマウスやキーボードの使い方を指導するだけで、あとは良い言葉を選ぶなら生徒の自主性に任せて、変な設定等を行わないように監視しているだけでした。
どういう指導要領になっていたかは知りませんが、コンピュータによるオートメーションを過剰評価して授業もオートメーション化出来るかも?と国は考えたのでしょうか?
まあコンピュータ教育が導入された最初期ですから実験的な意味合いも多分に含まれていたと思います。
パソコンの起動方法から始まり、ローマ字入力(小学校はひらがな入力)、そしてMS Officeへと入りいます。
このあたりは民間のパソコン教室と変わりがないかも知れません。
小学校で行われていた学習のオートメーション化への期待は無惨にも崩れたらしく、教師は手取り足取り教えてくれます。
それは新規フォルダや新規ファイルの作成方法、メールやWebブラウザの使用方法、その他今現在皆さんが日常的に使うであろうソフトウェアの指導が全く無いです。
どうやら学習のオートメーション化は不可能だと気づいたため、今度は思いっきり実用に振ってMS Officeマスターを育てるという選択をしたようです。
Wordでは文字の大きさや色、背景色、ワードアートの使用法、図の挿入、印刷などが中心に指導されます。
ワードプロセッサソフトが大好きな方は気付いたと思います。そうですWordなのにマークアップの指導が一切ありません。
完全に見た目の変更の仕方と印刷だけの指導であり、Wordなのにアウトラインとか完全に無視です。
見た目中心の指導を行うことはWordと変わらないですが、Excel関数の指導に入ると関数の意味をほとんど教えず「B1へ=SUM(A1:A5)と入力してください。はいA1からA5が足された答えがB1に表示されました。次は...」といった感じです。
生徒は教師の指示通り入力するだけで応用とかそういうの全くわかりません。しっかり理解してるのは見た目の変更の仕方くらいです。
時代ですね。こうして互換性無視なオフィスファイルは作られていったのでした。国がそう教えてましたから。
あっそうそうPowerpointとかAccessは授業でやりませんでした。
端的に言うのならば同上。
しかしPowerpointが追加されました。流石にPowerpointも教えないといけないと気付いたのでしょうか?
高校によっては工業高校や商業高校、高専ではもっとマシな指導をしていた可能性はあります。
ただやっぱり社会人から見るとツッコミ入れたくなるような指導が一部で取られていたと思います。国も手探りですから。
この年齢くらいになると学校の授業で覚えたと言うよりも独学でパソコンを習得してる生徒が殆どになっていました。
全くと言って良いほど学校の授業からは得たものがなく、エロ画像探しのほうがコンピュータリテラシーを僕に与えてくれました。
そして大学時代は教授のゴリ押しからOSがWindowsからEmacsに変わりました。
はてブで小学生向けにビジュアルプログラミングScratchが流行り始めてるんだなと知ったくらいでコンピュータ教育の授業の内情がどうなっているか全く知らないです。
なので僕が少年期に受けたコンピュータ教育を前提として「こうだったら良かったのに」というのを書きます。
コンピュータを扱うにおいてデータ管理というのは非常に大事です。
何故判りやすいファイル名を付けるのか?何故フォルダを作るのか?そういうことをしっかりと指導しなくてはなりません。
とりあえず僕も誰かに教える気になって書いてみたいと思います。
今だけ使えれば良いデータはどうせ直ぐに破棄するデータなので用途に合致すればどんな風に作っても構いません。チャットやっててウケを狙うためにネットからダウンロードする時にファイル名を「a.jpg」にするとかそういうことです。どうせ消します。
注意しなければいけないのは残り2つです。残り2つは前提として後々見たり使ったりするデータです。
このデータのファイル名を「a.txt」とかにしたら何のデータか全くわかりません。
つまり後々使ったりするってことは探すってことです。探すのに判りにくいファイル名にしてたら意味もなく違うファイルを開いて探しまわることになります。最近流行の「名前重要」です。
このジャンルのデータはある特定のフォルダ(ディレクトリ)に保存すると決めておけば探すとき非常に楽です。
そのため各OSは、例えばWindowsならば「マイドキュメント」や「マイピクチャ」「マイミュージック」などを用意してくれてます(ソフトウェアも空気を読んでデフォルトの保存先をそういうのにする)。
せっかく用意してくれているので使うようにし、もし自分でフォルダを作るときは名前重要ですから判りやすいフォルダにしておきましょう。
例えばTwitterであるジャンルの話を同好の士に読んでもらいたい場合どうしますか?ハッシュタグを付けますよね?
そうやって名前を判りやすくしておけば自分以外の他人が使う時も非常に楽なのです。
「でもよく使うデータを深い階層に置いてたら面倒じゃん」っていう意見はもっともです。
実はそのために「デスクトップ」という階層や「ショートカット」があるんですね。
デスクトップがアイコンだらけの人ってたまに居ますけど、きっとそういう人はコンピュータ教育は受けたけど保存されるデータの種類を知らない人です。あなたは悪くないですコンピュータ教育が悪い。
世の中には目の見えない人が居ます。そんな人たちがコンピュータを使えるように「読み上げソフト」ってのがあります。
まあいろんな意味で"文字通り"読み上げるためのソフトウェアなわけですが、このソフトは何も編綴もないテキストデータを読み上げるとめちゃくちゃ棒読みです。
それが更に平仮名ばかりで句読点もないテキストだと読み上げソフトは棒読みで一気に読みあげて目の見えない人はものすごく聞き取りにくいです。こんなテキストは目の見える僕たちでさえ読みにくいです。
そこで僕達は漢字を使ったり句読点を使ったりして可能な限り読みやすくします。実はこれがデータの中身にとって重要なのです。
句読点は文章を判りやすくする目印ですが、これを付けることをコンピュータの世界では「マークアップ」と言います。
読み上げソフトはマークアップされた文章だと、何処がタイトルで何処が本文というのが判別できるようになり、更に強調マークアップされている部分では音量を上げたりするので目の見えない人は非常に聞き取りやすくなります。
もしここまで読んである点に気が付いた人はかなり賢いです。その点とは「目が見えないのは機械も同じ」という点です。
マークアップされた文章は機械にとっても非常に判別がしやすい文章であり、実例をあげるのであれば検索するときに使う「Google」が検索結果へWebページのタイトルを載せてくれるのも、マークアップされたタイトルを拾い上げているからなんです。
Wordでも「見出し」と指定された行は機械的に判別され、アウトライン機能で文書の管理が非常にしやすくなったりします。
PDFでも同じでアウトライン表示されたり、読み上げソフトがPDFに対応していたらマークアップに合わせて読みあげてくれます。
少しだけ専門的になりますが、データベースとして使われているCSVファイルやJSONファイルも特定の記号を使われているのでコンピュータは楽に判断できるのです。
更にしっかりとマークアップしておけばPDFを電子書籍でよく使われているEPUBに変換するなど、他形式への変換が失敗しにくくなる利点もあります。
今まで行なってきたコンピュータ教育は正直「コンピュータ教育をしてますよ」という体裁だけを保っている教育の仕方だと思います。
コンピュータが使われるようになったから教育に導入し、MS Officeが使われるようになったからMS Officeを教え、IT市場が大きくなったからプログラミングを教える。
高速に変わっていくコンピュータの状況に合わせてしっかり教育は対応して居るように見えますが、現状のコンピュータ教育が見ているのはコンピュータの上っ面だけです。だから教育も上っ面になる。
コンピュータ教育ではタブレット端末の導入を現在検討しているらしいですが、どうみてもこれは上っ面な判断です。
コンピュータで高速に変わっていってるのは上っ面だけであり基礎の部分は。ハッカーが使ってそうないわゆる黒い画面、つまり端末(コマンドプロンプト/ターミナル)の頃とあまり変わってません。
その基礎を教えずしてOfficeだのビジュアルプログラミングだのを教えても生徒が得るものは何もないと言って良いと思います。
正直この記事は総合職さんやプログラマさん、エンジニアさんから見たら「なにそんな当たり前の常識的なことをドヤ顔で記事にしてんの?」って嘲笑されるような内容です。
その嘲笑されるような内容をコンピュータ教育はできていないわけです。
これWindowsじゃなくたって教えられること、最新ハードじゃない中古のPC-98でだって教えられること、中学生以上は持ってそうなスマホでだって教えられることです。
http://anond.hatelabo.jp/20130830202223
特定を恐れずに、その経験談を書いておこうと思う。
400文字詰原稿用紙のレポートを何度も書かされた。学校までの道案内や入学式の報告といった、無味乾燥としたレポートだ。
その400文字は、先生の厳しい添削で真っ赤になるのが常だった。
まともな文章をたった400文字すら書けない。その現実の中で僕らはもがいた。
本を読んだ。
プラトンから「神々の指紋」まである推薦図書のリストがあって、半分は読んだと思う。(神々の指紋は残念ながら読んでいない)
村上春樹や吉本ばななや江國香織が好きな人が仲間内では多かった。一方で、ラノベばかり読むグループもいた。
その時期いちばん読んで良かったと思うのは、佐藤信夫の「レトリック感覚」「レトリック認識」だった。
ただ、読んで良かった、という気持ちだけが残っていて、内容は詳しく覚えていない。
50枚書くことは難しくなかった。
夏にはもう初稿が提出できて、先生にはそれなりに褒めてもらえた。
しかし、自作が何となく気に入らなくて、勝手に最初から書き直してしまった。
書き直した作品は、生徒みんなの前で罵倒された。(トラウマだ)
合計で7回は書き直したと思うけれど、何度やっても評価はされなかった。
そちらも同じように失敗した。
レポートなども合計すると、2年間で2000枚は書いたと思う。
授業では色々な人から話を聴いた。
某有名ゲームのプランニングをしていた人・女性雑誌の編集長・とある古参ハッカー・ラノベの大御所・今ではずいぶん有名になってしまった当時の新人作家……。
映画や演劇もたくさん見せてもらった。レポートの宿題が必ず付いていたけれど。
民俗学で古事記を読んだり、美術学で有名絵画から聖書のシンボルを読み解いたり、構造主義を応用して物語のプロットを組み立てる授業もあった。
教えてくれる人はみんな(出来る範囲で)熱心で、青臭い自分の言葉もちゃんと聞いてくれた。
ちなみに、小説の先生は往年の一太郎ユーザーで、ESCから始めるショートカットばかり使っていた。
キーシーケンスの組み合わせを暗記していたようで、VimやEmacsに通じるところがある。
日本語IMEについて、ATOKは使い物になるが一番良いのはWnnだ、と言っていた。その真意は定かではない。
提出ファイルにはShift-JISのプレーン・テキストを指定し、タイトルや名前の入れ方も詳しく指示していた。おそらくマクロで処理したのだろう。
ただ、提出メディアがフロッピー・ディスクだった。もう10年以上前の話で、テレホーダイの記憶が鮮やかだった頃だ。
僕が通っていた学校に限れば、環境としてそんなに悪いところだとは思わない。
当初は周囲を見回して傲慢になっていたけれど、その鼻柱は見事に折られてしまった。
客観的に言って、使おうと思えばいくらでも使える環境だったと思う。
ただ、進路が難しい。学校を出た後でどう生活を立てていくかが難しい。
卒業生の進路はそれぞれだった。
定職に就いていない人間もきっと多いだろう。
頭の良い同期は大学に転入した。
プロとして活動していると言えるのは、50人の同期の中で3〜5人だと思う。
おそらく最良の選択は、大学に転入し、標準ルートに戻ることだ。
標準ルートを知ることも大事だし、それから生活を安定させてデビューを目指せば良いと思う。
(ただし金が掛かりそうだが……)
何も知らない自分に大きなトラウマを与えてくれたのは、本当にありがたい事だ。
ただ、自我の捨て方は教えてもらえなかった。
こればかりは、学校の外で年齢を重ねてから、知るほかなかった。
某純文学系の新人賞に一度だけ送って落選した実績しかまだない。
そして、日本語よりJavaを書く時間の方が長く、それよりもD言語を書きたいと思う毎日を、無為に過ごしているのだ。
トラバでも言われてしまったけど、「学んだこと」と言いながら、学んだ技術的な内容をあまり書いていなかった。
多少参考になる部分があるかもしれないので、追記してみたい。
ストーリー構成の教科書としては、シド・フィールドが使われていたようだ。
ただ、当時はろくな翻訳が無かったらしく、教師オリジナルのテキストを使っていた。
ハリウッド流の伝統的な4分割構成が基本で、自分のアイディアをとにかくそれに落とし込み、内的整合性を保って読者に提示する技術を教えられた。
たとえば下記のような点をチェックするよう繰り返し言われた。
他にも色々と細かいテクニックについて教えられた。書くときの気構えであったり、推敲や添削の方法であったり。
今はストーリー構成の良書も多いだろうし、自分で教科書を集めて勉強できる環境も整っているかもしれない。
だから、自分で体系的な資料を集め、先生になってくれる人や切磋琢磨できる仲間を見つけ、継続的に書く環境を整えられれば、わざわざ専門学校に行く必要は無いだろう。
専門学校などという人生を浪費する施設より、週末の教室+Webでの作品発表・添削という形の方が適しているかもしれない。今の時代はきっとそうだろう。
レベルの高い卒業生の作品を見ると、内的整合性の点では下手なラノベよりしっかりしているものが多かった。
しかし、
「全体的に整合性が取れていて、ちゃんとした盛り上がりがあり、伝統的な構成に従って無駄なく構成できているか?」
という問題と、
「それが商業的に売れるか?」
というのはまったく別の問題だ。
商業的消費はたぶん非体系的な世界で、体系的技術がそれにどこまで寄与できるかは分からない。
とあるデビューした卒業生の処女作は、内的整合性など何も考えていない、次々と新しい要素がひたすら出現する怪作だった。
その一方で、しっかりした技術のある人が、なかなかデビューの糸口を見つけられないでいる。
ちゃんとした構成や一貫性よりも、変に魅力的な脇役が愛されたりするのが商業の世界だ。
特に日本において、消費者は全体よりも部分を好む傾向が強いと思う。
そして、部分で受けることを狙うのはかなり難しい。
部分を愛する文化というのはきわめてハイコンテクストな文化で、普遍的・一般的な技術が原理的に存在できない気がする。
それは様式美に満ちた世界で、日本の文化はそういった様式美の継ぎ足し・連続で出来上がっているようにも思う。
こういった事は加藤修一の「日本文学史序説」に素晴らしくまとまっていて、とても面白かったので、創作に関わる人は序章だけでも全員読んだ方が良いと思う。
マンガもゲームもアニメもラノベも全部これで説明できるし、将来的にどんなものが日本で流行するか判別する目安にもできそう。
以上を要約すると、ちくま学芸文庫から上下巻で出ている加藤修一「日本文学史序説」を3000円で思い切って買おう、それを読めば専門学校に行かなくても大丈夫、場合によってはラノベを書かないで済ませられるかもしれない、ということだ。
emacsとの対比でvisual studio?
エディタの話してるんじゃないの?
個人的には、visual studioよりも、eclipse使うわwww
漢字変換の最中というIMEが動作握っているときですと、emacs上でもC+hは押しても、
前文字を一文字消すにはなりませんよ。
漢字変換の最中というIMEが動作握っているときですと、emacs上でもC+hは押しても、
前文字を一文字消すにはなりませんよ。
漢字変換の最中というIMEが動作握っているときですと、emacs上でもC+hは押しても、
前文字を一文字消すにはなりませんよ。
http://anond.hatelabo.jp/20130327020050 の続き
キーバインドのおかげで、掌を左右に動かす必要が少なく、動きが小さい分速くなります。加えて動きが小さいためホームポジションを維持でき、ブラインドタッチがしやすくなります。
例えば、Enterや矢印キーといった、右手をホームポジションから外す必要のあるキーを押す必要がなくなります。
また、このキーバインドはUNIXのコンソールでのキーバインドが元のため、Linuxのコンソールでも当然使用可能です。
(Tera Termなどターミナルソフト経由の場合は、Metaキーを有効にする必要があることは知っておく必要がありますが)
emacs学習の本はO'REILLYあたりの本で十分です。emacsで何ができるか読み込んでください。
日本語入力の際に、漢字変換を行いますが、候補を変更していく場合、基本はスペースでしょうが、上の候補に戻す場合や誤入力を消す場合に、結局BSや矢印キーを押すことになってしまいます。
折角emacsを用いて,省入力できているのですから、この漢字変換もemacsライクにしてしまえば動きが統一されます。
筆者はIMEとしてATOKを使用しており、以下のような設定をしております。
例)候補確定はC+j、変換候補の異動はC+nやp。連文節変化の移動はC+fやb。誤入力の際はC+hで削除。
※エディタから外れますが、トラックポイントになれることもお薦めします。
マウスと異なり手を動かすこと無く、指だけでマウスの代わりが得られます。
こうしていくと全てが掌の中に収められます。
http://anond.hatelabo.jp/20130325172822 の続き
言語はJava7を想定。(Java8が迫っていますが、Lambdaなど関数型は、まだ早いと言うことで)
選定理由は、C++と比較して学べるところが大きく、安全でシンプルな言語だから。
※いきなりJavascriptはやめとけ、PHPは論外。
Ruby・Scalaでないのは、筆者が初心者には適切には教えられないから。
おもちゃ・ToyとしてjQueryで遊ぶのは、悪くは無いと思う。
これ以降は名著の紹介や学習方法の紹介が主体となります。名著のコンポジションという形が時間的限界ですね。
量については「初級になるなら、専門書を計3,000ページは修得することは覚悟してね」なんて言ったりしています。
Javaで初級のわかりやすい指標ですと、[amazon:Effective Java]とGoFまでの修得。
初級になるまでに登竜門への挑戦期間を含めて、3~4年はかかっても仕方が無いとも思います。
※逆に「一山いくらのコーダー」というのは、Effctive JavaやGoFが達成している技術も知らずに「自分がJavaプログラマー」だと誤解してしまっているような人達です。
そういったコーダーは何年経とうとも初級プログラマーにすら敵いません。
初級を目指して、プログラミングを楽しんでください。
ただ、学ぶべきことはべらぼうですが、「各分野毎に、エレガントな方法がある。だから探して修得する」ということが大切です。
※「一を聞いて十を知る」ような優秀な人に、50冊くらいドーンと本を置いてあげて、各本の目次を読ませるだけで、
底の見え無さを悟ってくれたりすると、嬉しくなってしまいます。
※余談ですが、その底の見え無さは数学という学問そのものですね。例えば、関数型言語の底流に「圏論」というここ100年の最新の数学があります。
また中級くらいで、Liskovの置換原則などが載っている本を紹介しますが、
そのLiskovの置換原則の周辺で出てくるcovariant(共変)って、圏論という数学の概念だったりします。
数学畑出身としては、数学が現実に活かされている嬉しい事例です。
「速く正確に大量の出力」という能力は、プログラミングをする上でも、ドキュメントを書く上でも、何より「つまらん仕事」の時間圧縮ができるようになるため、重要です。
スローガンとしては「思考のスピードで出力することを目指そう」です。
紹介するエディターはemacsやvimやExcelです。ついでにIMEとしてATOKを使用しているため、ATOKの操作をEmacsライクにする話も紹介します。
ExcelはWindows環境でMeadowすら入れさせてくれない場合の最後の砦という扱いです。
コマンドラインは、「コマンドラインというものがある」「時として非常に強力である」程度の紹介です。
※筆者はzshは全然使えません。使いこなしている方々と接する度に「勉強しなきゃな~、でも、あっちの方を先にやりたい・・・」とグズグズして、はや何年・・・
正規表現は置換を用いて、テキストの一括編集が重要です。後、遭遇したくない事態ですが、スパゲッティコードの解析をする上での最後の砦です。
※遭遇したくない例
ん?何か変なところで副作用のある処理があるようだなぁ(消沈)、SQLのInsertかUpdateか一応Mergeも使っているところから逆算して原因箇所を探すか・・・(諦念)
この糞コードがっ!!こんなところに書くんじゃねぇ!!(憤怒激高)
(ここで、他にやらかしていそうな似たようなコードを正規表現でgrep検索。改行コード込みにすれば複数文検索も可能)
わはは、予想通り共通化すべきロジックのメソッドがそこら中にある・・・
入門編で一つLinkedListというアルゴリズムを学びました。
少なくとも一つ本を読みながら自力でアルゴリズムを学べる人なら、大成できる可能性があります。
前に紹介した[amazon:C++実践プログラミング]には、LikedListやStackなど基本的なアルゴリズムが載っておりますが、
これに加えて、初級になるためにはこれくらいは知っておいて欲しいというものを紹介します。
※後、最初から必ずしも手を出さなくても良い上限も紹介いたします。
プログラムは、データを入力して、加工して出力・保存する処理の繰り返しです。
つまり、各一連の繰り返し毎に、「正しい入力」「正しい出力」を定式化する必要があります。
それを人間の手では無くコンピューターにやらせられるように、つまり自動テストできるようにテストをプログラミングします。
そこで処理の進捗を確認するためにロギングし、処理が想定通りであるかをアサーションでチェックし、
不正な入力・不正な出力=例外が起きたら、対処策をプログラミングします。
(ex 途中で処理を中断して、入力者に適切な入力のメッセージを伝えてあげる。入力の自動補正などもあり得る)
で、ここら辺をまとめてどうあるべきかとして「契約プログラミング」があります。
※余談。定式化・テストに際して、数学畑の人間としては、Javaだとequalsのオーバーライドでも必要になるし、同値関係・同値分割だけでなく、集合論・群論から学んで欲しい・・・(ここいらは数学科の学部1~2年の学習内容)
名著は英語で読みましょう。名著が名著たる由縁は、度々引用されることにあります。
つまり最新の技術書を読むときに、引用された名著のフレーズが、新旧のリンクをなし、理解の助けになります。
壁打ちといって、独り言で思考補助をするよりも遙かに有益です。
※素晴らしい師匠を探すなら、大学行くのが一番ですが、見聞を広げていく中で出会いを待つしかないとも思います。
マルチスレッドが難しいのは「バグを起こしにくいプログラミング」を求められるから。
つまりTry and Errorからの決別が求められ、今後の仕様変更・拡張も踏まえて慎重に慎重にデザインする必要があります。
できる限りステータス変数を持たずに安全に、でもマルチスレッドにするのだから、効率を追求しなければ本末転倒。
でも効率のためにはメモ化に代表されるキャッシングは必須と、アンビバレンツな要素のバランス取りが難しい。
このために、リエントラントな実装・抽象と実装の分離など様々なエッセンスを駆使することが必要です。
というよりも孔子曰く、知っているよりも好きであること。好きであることよりも楽しめることのほうが強く、
気づいたら日々時間が許す限りプログラミングをしてしまうのが理想です。
※仕事として嫌々スキルを磨かなきゃということが、これほど不幸な職業も無いですね。
学習の達成度を測るには、簡単すぎる不適切な問題ですね。
写経は数学の証明問題を、教科書のテンプレ通りに、数値や名称だけ変えて記述することしか出来ない人の発想。
つまり「矛盾無く一貫した論理モデル」の構築が自由に出来ず、テンプレの微修正しか出来ない人の発想。
また、外部の「矛盾無く一貫した論理モデル」の吸収が不自由で、アルゴリズムを「手順」としてしか捉えられないように見受けられる。
「連続」であること確かめるための「ε-Δ論法」(数学科の学部1年の学習内容)
事前知識無く、このモデルを理解できる人は、十分に「矛盾無く一貫した論理モデル」を構築できる人。