2013-03-25

プログラミングの入門

プログラム定義

プログラム:定義づけられた物事を進めていく妥当な手順・方法の決定、および物事・手順・方法記述

プログラミング定義

(コンピューター)プログラミング:コンピューターが進めていく物事を定義し、妥当な手順・方法を決定し、記述すること。

プログラミング = デザイニング union コーディング;

デザイニング:進めていく物事を定義し、妥当な手順・方法を決定すること。

コーディング:コンピューターが進めていく定義づけられた物事の決定された妥当な手順・方法を、記述すること。

プログラミングに関わる人々

PG(プログラマー):プログラミングする人。

CD(コーダー):コーディングする人。プログラマーとは限らない。

SE(システムエンジニア):進めていくべき物事を定義する人。プログラマーとは限らない。

PM(プロジェクト マネージャー):(プログラマー)プログラマー。(コンピューター)プログラマーとは限らない。

日本ソフトウェア業界ではSE定義した物事を、何の工夫も無くそのまま記述するCDという体制となっている。

まり「物事を進めていく手順・方法」が余りにも稚拙で、PGと呼べるSECDが居ない。

※「物事を進めていく手順・方法」の巧拙の例としては、

仕様:「等差数列で、1から10までの整数を加算する」

CD: べた書きかループで 1足す2足す・・・

PG: (初項 + 最終項) x 項数 /2

というように、例えば巧拙の差は「上手い・エレガントな方法アルゴリズム」だったりします。

0.以下のような方はプログラマーに向きません。入門しないでください。

継続的に勉強できない(1週間で最低10時間は、何があっても勉強しましょう)

論文・学術書が読めない。(コードはお堅い理論的に筋道立った文章の極致の一つです)

100ページくらいなら一晩で修得してやろうという気合いが無い(一晩で仕様書読み込んで次の日から活かす必要があったりします)

仕事のやり方に疑問を抱かない(楽するためにはどんな苦労も厭わず、常に最善を考えましょう)

・いつかはマネジメントをしたい(人を使うよりも、プログラム組んで仕事させた方が、安くて速くて正確ですよ)

(笑)マネジメント:下僕に進捗という数字を報告させて、自分の握っている進捗管理という方眼紙のマス目を埋める作業。

自身の雇い主にマス目の埋まり具合を報告する作業。

1.入門者になるために、学んでおくべきこと

※ここで以下の1~4を6ヶ月がんばっても挫折する方は、「一山いくらのコーダー」にしかなれない可能性が高いため、

ソフトウェア業界」自体を諦めた方が良いですね。

しがみついてしまうと、真っ当な技術者の足を引っ張ることになります

逐次実行、条件分岐、反復実行

ポインタ最近情報学科のくせに学部ポインタを教えない大学があり、そういうところは真っ当な大学ではございません。

1)O'REILLYの[amazon:C++実践プログラミング]を最初の「ポインタ」まで読んでください。

2)C++の実行環境をC99で整えてください。(環境の準備は自分で面倒を見てください)

3)ポインタを用いて、文字のLinkedListクラスを実装してください。

※LinkedListとは以下の仕様を満たすクラスします。(C++JavaのLinkedListを実装)

http://docs.oracle.com/javase/jp/6/api/java/util/LinkedList.html

4)LinkedListの入れ子でTree構造をつくり、再帰を用いて、全要素をコンソール出力するプログラムを作ってください。

5)4)をクリア出来た人は、この本を1年以内に全部読んでください。

ただし、C++は複雑怪奇言語のため、これ以降は知識レベルの修得で構いません。

私は中3の時、STLBoostどころかbooleanの無い時にこの本を9ヶ月で読んでおります

※私が面接に出る場合は、当該内容のLinkedListやQuickSortの概要を直ぐさま説明できる人は、可能性有りと○を出します。

ただし、日本ソフトウェア業界は腐っています

面接で「LinkedListを勉強してきました、直ぐさま説明できます」といって、「そんなの出来て当たり前だ」と言ってくれる会社殆どございません。

大抵はポカーンとして意味不明という顔をする文系人事だったり、「そんな技能必要ない」というところが殆どです。

逆に「できて当然」と言ってくれる会社は、技術をしっかり学べる可能性大です。

2.初級者への道

★ここまでクリアした方は、「入門者」と呼んで差し支えございません。次は「初級者」への挑戦です。

プログラミングは入門者になるだけで1年かかる世界です。

内定もらってから勉強して適正無しと自覚すると、地獄ですよ。

※初級者になるためからは、べらぼうに学ぶべきことが広がります

燎原の火のごとく。

※筆者の立場

Joelさんの「Javaスクール危険」に賛同するので、ポインタ優先ということで。

加えて、Javaクラスインスタンスとstatic変数の話を理解するのに、メモリー意識があったほうが楽だと思う派。

  • とりあえず「プログラマー」と呼んでいる職業の具体的な対象をもう少し定義した方がいいと思うよ

  • 間違ってはいないが、業務系の現場ではポインタよりも先にオブジェクト指向を抑えておいて欲しいというのが本音。 LinkedListをスクラッチできる人なら、すぐ理解できると思うけどね。...

  • http://anond.hatelabo.jp/20130325172822 正直、プログラミング初学者にやたらc言語とポインタ学習を勧める風潮には辟易している。   ポインタは何にでも使えすぎるんだよ。自由すぎる代わりに...

    • 「関数ポインタを駆使しろ」というわけでも無く、 LinkedList程度なら「ポインタを使いこなす」には到底及ばない「簡単な話」という認識。 >>やるとしてもそれは直接叩くのではな...

      • 見づらくて保守性の低いコードを書く奴より、多少コストが高くても読みやすいコードを書く人の方が好かれる。

        • コスト度外視は三流、コストを考えて二流、コストパフォーマンスを考えてようやく一流。

        • 連結リストとSQLのループ分解程度で見辛いなんていう人初めて見た。 よくてSIer営業だよね?まさかプログラム書いてないよね?

          • 多分そこにいるのは 「連結リストとSQLのループ分解程度で見辛いなんていう人」 じゃなくて、 「相手の文も読まずに適当に上から目線を開陳する人」 というだけだと思う。よくいる、...

    • いやだからさ、ここで言ってる「プログラマー」っていうのは、制約多くてAPIも大して整備されてないゲーム専用機上で超綺麗なリアルタイムレンダリングするエンジン開発するぜ!サ...

      • 筆者としては、ゲームプログラマーの話は、「プログラミング入門」からは離れた尖った話だね。 明日以降の日記で書く「プログラミング初級者」以降の分化した世界の話だね。 そして...

      • 筆者としては、ゲームプログラマーの話は、「プログラミング入門」からは離れた尖った話だね。 明日以降の日記で書く「プログラミング初級者」以降の分化した世界の話だね。 そして...

  • 不勉強なもので教えて頂きたいのですが、「LinkedListの入れ子でTree構造をつくり」というのは、どういう意味でしょう? 普通、木構造といえば、ノードは子ノードを2つ以上持てるようなも...

    • 横だけど、君の日本語の解釈がおかしいだけじゃね。 struct Node{uint nchild;Node **children;} とかやればいいんじゃないの?

      • 具体的なコードを出していただいて助かります。もしかして、中間テーブルをmallocしろ、という話ですか?? あと、これは連結リストにもなっていないようですね。(ま、キャストすれば無...

    • もしかすると、連結リストの各ノードに保存するcharなどのデータのかわりにポインタを入れればいいだろう、という話なのかもしれませんが、それだと「入れ子」とは言わないでしょ...

      • それは「今はC++の話をしているから」ですね。 あいにくLispはよく知りませんが、Lispの場合はタプルに実データだろうが他のタプルへのポインタだろうが何でも入れられるので、連結リ...

        • C++ははるかな昔にBetter Cの段階で挫折した経験しかないが、 一方、Cのような変数の方に型のある言語の場合、連結リストの自然な実装では それは「自然な実装」じゃなくて「原始的な...

          • そもそも、よくよくLinkedListクラスのインターフェースを眺めてみると、これは連結リストのノードを表現するクラスではなく、連結リストそのものを表現するクラスのようですね。こん...

        • データ部をNode*型にすればいいだろ。SICPあたり読むといいんじゃね?

  • 実際の現場では5年経験がありますとかいう癖にfizzbuzz書けませんとか言う連中をまとめて一仕事完成させないといけない。 俺の師匠はベタなプログラムを書きなぐるだけの俺の横に三か...

    • 入門者にもなれない人間が、そのままズルズル残って役に立った例は見たこと無いんだよね~ 大成できないなら、日本のソフトウェア業界から足洗わせた方が温情という見解 単純労働し...

      • >入門者にもなれない人間が、そのままズルズル残って役に立った例は見たこと無いんだよね~ それはあなたが育てられないからだし、育てられないのはあなたの能力が低いからだよ。 ...

      • >入門者にもなれない人間が、そのままズルズル残って役に立った例は見たこと無いんだよね~ それはあなたが育てられないからだし、育てられないのはあなたの能力が低いからだよ。 ...

      • >入門者にもなれない人間が、そのままズルズル残って役に立った例は見たこと無いんだよね~ それはあなたが育てられないからだし、育てられないのはあなたの能力が低いからだよ。 ...

        • 「誰もがプログラマーになれる」という幻想を信じているのでしょうか? 同様に、「誰もが努力すれば何にだってなれる」という幻想を信じていらっしゃるのでしょうか? 信じているよう...

        • 「誰もがプログラマーになれる」という幻想を信じているのでしょうか? 同様に、「誰もが努力すれば何にだってなれる」という幻想を信じていらっしゃるのでしょうか? 信じているよう...

          • →「誰もがプログラマーになれる」という幻想を信じているのでしょうか? →同様に、「誰もが努力すれば何にだってなれる」という幻想を信じていらっしゃるのでしょうか? なんだこ...

  • 「プログラミング出来ない奴ちょっと来い」と「プログラミングの入門」のプログラマ分類がSI業界的なので、別視点を引用。 プログラマには、プログラマ、職業プログラマ、真のプロ...

    • 「プログラミング出来ない奴ちょっと来い」http://anond.hatelabo.jp/20130322031333 う~ん、この人の日記の意見は、駄目だな~ 特に駄目だと感じるのは、 「というのも、多くの人は計算機科学を...

  • この人もプログラマに向いてなさそう

  • http://anond.hatelabo.jp/20130325172822 いや,入門者にLinkedListは無理ゲーだろ. この人,入門者に教えたことあるのかな? 無いだろうなあ.

    • 横だが、Linked Listを本を参考にして実装できない奴は門前払いでいいと思うよ? 入門者に教えたことがあるかないかと言われればないが、学生時代に同期の手伝いをしていた記憶を思い...

    • 筆者ですが、新卒や第2新卒に教えるけど5割は脱落するよ。 それはもう仕方ない。 短期で転職という経歴に傷をつけることを避けるため、 3年見込みが無いことをやることになって、見...

  • http://anond.hatelabo.jp/20130325172822 の続き 言語はJava7を想定。(Java8が迫っていますが、Lambdaなど関数型は、まだ早いと言うことで) 選定理由は、C++と比較して学べるところが大きく、安全でシ...

    • 増田が実際にプログラミングしている分野を知りたい

    • http://anond.hatelabo.jp/20130327020050 の続き emacsを使う意味 キーバインドのおかげで、掌を左右に動かす必要が少なく、動きが小さい分速くなります。加えて動きが小さいためホームポジショ...

      • キーバインドがどうしても覚えられなくてEmacsやVimはあきらめました

        • いまどき、普通のハッカーはそこらの人よりEclipseやVisualStudioを上手に使いこなしますよ。 この手の、むやみに自分の趣味を押しつけてくる手合いにはろくなやつはいません。 それより...

          • 横だけど、VisualStudioに関しては、クソなものも多いMS製品の中でも屈指の神ツールだと思う。 VSに比べたらEclipseなんて使ってらんないし、xcodeもかなり微妙。 VisualStudio for macとかfor linuxと...

          • 横だけど、VisualStudioに関しては、クソなものも多いMS製品の中でも屈指の神ツールだと思う。 VSに比べたらEclipseなんて使ってらんないし、xcodeもかなり微妙。 VisualStudio for macとかfor linuxと...

      • http://anond.hatelabo.jp/20130327182715 上の候補に戻す場合や誤入力を消す場合に、結局BSや矢印キーを押すことになってしまいます。 ……?? 私は、1つ上の候補に戻したい場合はShift-Spaceを押...

        • 漢字変換の最中というIMEが動作握っているときですと、emacs上でもC+hは押しても、 前文字を一文字消すにはなりませんよ。 日本語入力するとき、タイポしてからそのまま変換したときに...

        • 漢字変換の最中というIMEが動作握っているときですと、emacs上でもC+hは押しても、 前文字を一文字消すにはなりませんよ。 日本語入力するとき、タイポしてからそのまま変換したときに...

        • 漢字変換の最中というIMEが動作握っているときですと、emacs上でもC+hは押しても、 前文字を一文字消すにはなりませんよ。 日本語入力するとき、タイポしてからそのまま変換したときに...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん