私は入力された値の階乗値を出力できる程度の初心者です。
下のURLの記事の中ほどに上田泰己さんという方がソニーコンピュータサイエンス研究所を訪ね「1年でプログラミング手法を身につけた」とあります。
http://nikkeibp.jp/wcs/leaf/CID/onair/jp/biz/326385
具体的にどれだけの構文や手法を使えれば手法を「身につけた」といえるのでしょうか。しかも研究に使うレベルで。到達するための具体的な勉強法を教えてください。
http://www.hatena.ne.jp/1096500465#
プログラミングに精通した方に質問です。URLでなく知識をお貸しください。 私は入力された値の階乗値を出力できる程度の初心者です。 下のURLの記事の中ほどに上田泰.. - 人力検索はてな
頭で考えた事を実装できれば「身につけた」といえると思います。
上田氏にとって、プログラミングは手段でしかないので
仮に設計が汚かったとしても、ちゃんと期待した
結果さえ出力できれば問題ないのですから。
構文は全てを覚える必要は必ずもないと思いますが
よく使われるような構文は一般的な人でも1年も経てば
マスターできます。
手法については、どこまで使えればOKという問題ではないと思います。
ただ、記事を見た印象では
上田氏はもともとプログラミングの知識があり
1年で人工知能に関するプログラミング手法を
身に付けたという意味にもとれそうな気がします。
http://nikkeibp.jp/wcs/leaf/CID/onair/jp/biz/326385
「20代で教授職相当に抜擢、体内時計研究で先頭走る」、理研の上田泰己氏 - ニュース - nikkei BPnet
精通はしてないのですが……
言語や処理系ごとに必修の構文や手法とかはありますが、
自分のやりたいことがどうすれば実現できるか見当がつくようになることかなあ。
研究ならデータの解析やシミュレーションで数式や手続きをどうプログラムするかとか。
もちろん、結果は同じでも出来不出来の差はありますが。
日経BP社の総合情報ポータル nikkei BPnet 〈日経BPネット〉
現役のプログラマとしてお答え申し上げます。こちらの問題は、他の知的技術に置き換えると理解しやすいと思います。例えば英語会話に関し具体的にどれだけの構文や手法を使えれば手法を「身につけた」といえるのでしょうか。このような質問に置き換えてみます。私の回答は、「自分の思うことや意思を、的確に相手に伝えることができる能力」だと思います。英語の表現技法も、単語も、それを母語としていない者にとりましては無数とも思われる位にございますね。それを全部知識として習得することは、英文学者であっても事実上不可能であると思います。しかし、英文学者は、わからない単語や表現を調べる手立てにつきましては、精通しています。同様に、プログラミングの世界の知識も膨大であり、日々新しい技法は発生しています。そのなかで、「プログラミングを身に着けた」と言えるのは、「自分の思うこと、意思、技法を、自在にプログラミングできる能力」と思います。プログラマによりましても、その知識や習得技法は大きな差がございます。一流のプログラマは、全ての技法を知ってるわけではございませんが、不明の知識を調べられる方法には精通しています。
具体的な勉強方法は、まずご自分が興味ある技法や表現手段から、研究されるのがよろしいと思われます。膨大な知識があり、日々その情報量は拡大していますので、ご自分の感性から出発されたほうが長続きすると思います。継続されることが、一番重要であり、それができる人はあまりいません。一日1時間のプログラミングの勉強を3年間続けてみてください。国内ではその分野でトップクラスになることを保証します。
楽天が運営するポータルサイト : 【インフォシーク】Infoseek
URLはダミーデス
目的に、合った他人の書いたコードを、解読し自分なりに、作ってみる。の繰り返しでは?闇雲に、他人のコードを解読するより、同じ職場とかで、かかれているものを読むほうが、早くプログラムを、作れるようになります。
所詮、命令なんてたくさんありますが、ごく限られたものしか、使われなくなります。後は、コードを書くための考え方が需要になってくるのでは、ないでしょうか?
仕事としてプログラマーになって、7年かけて知りえた、見解です
・他人のコード→解読→作る
やっぱコピペだけじゃだめなんですね。
研究に使うレベルということであれば、
データ構造とアルゴリズムを組み合わせることによって、
プログラミングで何が可能になるかということを理解するのが
一番基本だと思います。
ずばり教えていただきありがとうございます。方針が見えてきました。
URLダミーです。
プログラミング手法って、ちょっと漠然としていると思いますが
構文やアルゴリズムの知識量では無く、
自分で思い描いたアプリケーションを作れるようになれれば
「身につけた」ということになるのでは?
プログラムを覚える上で、大事なのは
技術書を読んで構文を覚えることも大切ですが、
bonboさんがどのような研究をなさっているのか、わかりませんが
自分が何をしたいか?何を作りたいのか?
という目的意識を持って、それに見合った勉強をすればいいのではないでしょうか?
そうですね、次回はもう少し具体的に質問しますね。
http://park6.wakwak.com/~umui/ans100/pg/
プログラマさんに100の質問
プログラミングができるようになったという人の到達レベルはまず人によってさまざまです
VBしか扱えない人は、プログラミング手法を身に付けたとは言いがたいという人も居れば、技術計算が一通りできるプログラムをANSI Cで作れるだけでもプログラミングできるようになったという方もいらっしゃるでしょう
研究に使う程度のレベルであれば、math.hで使用する関数を理解して、グラフやファイルに出力することができる程度で問題ないと思いますが、一般的にプログラミングを身に着けたといえるレベルは、色々な要求に対して、どんなプログラムでも作れるレベルではないかと思います
bondoさんは研究に使うレベルでいいということなので、基本的な関数を理解して、誰が見てもわかりやすいプログラムを書くことができればそれで十分だと思います
研究の場合は、発表や引継ぎなどで沢山の人がソースを見る可能性があるからです
わたしはCマガジンに毎月掲載されていたプログラミングコンテストを学生時代にやってプログラミング技術を磨きました
正解だと名前が掲載されるので、それを励みにがんばってました(笑)
やはり、調べながら、実践するのが一番の近道だと思いますが、ここは数値計算が中心になるので研究使うプログラミングのスキルを向上させるのなら向いているのではないでしょうか?
参考となる書籍が紹介されています
「基本的な関数を理解」
「調べながら、実践」
参考書籍もありがとうございます。
はてなダイアリー - 快適、安心、シンプルなはてなのブログ
どの言語かにもよると思いますが、
プログラムの基本は以下の3つです。
「1)入出力、2)判断、3)演算」
判断と演算は大体どの言語でも似ています。
上記についてはその言語の仕様を全て理解する(関数、文法)必要があるでしょう。
上記を理解した上でさらにプログラムとは
「プログラム=データ+アルゴリズム」
という有名な言葉があります。
データ構造の設計と必要なアルゴリズムの理解、これが全て終われば「身につけた」といえるでしょう。
勉強の仕方と言えば一番いいのは
「とにかく打ち込む」最近の本の例文はCDやダウンロード可能な物が多いですが、自分でとにかく打ち込んで見てください。
そのうちに意味が分かってきます。
またあることをやりたい時にどの書きかたをすればいいか判ってきます。
わかりました!ありがとうございます。
Dream2Real:莎傑キ
掲題のサイトは、「プログラム 思ったものを形に」で検索したサイトです。
私が思うには、自分でイメージしたものを形にできるようになれば身につけたといって過言ではないと思います。最近の言語は優秀ですので、早い人であれば半年もあればできるようになります。
あとは思いつくか思いつかないか、何ができるか、できないかが経験によって培われていくのだと思っています。
特に研究でつかうのであれば、どんなことをPGでやったら早いか、それを作るのはどれだけの手間がかかるかを把握できればプログラムを身に付けているといえるとおもいます。
どの業界でもそうですが、見積ができたら一人前といいます。
到達するための勉強法は…。
そうですね、まず、自分の時間と根性と相談して、創ってみることではないでしょうか?
研究でもそうですが、いきなり素人が癌の特効薬をつくるんだ!と言って研究を始めたりはしません。したとしても結果はなにも残せないでしょう。step by step、まずはやってみることです。
step by step。ありがとうございます。
http://www.hatena.ne.jp/1096500465
プログラミングに精通した方に質問です。URLでなく知識をお貸しください。 私は入力された値の階乗値を出力できる程度の初心者です。 下のURLの記事の中ほどに上田泰.. - 人力検索はてな
典型的な「マスコミ話法」ですね。
ジェネラルな意味での「プログラミング手法」なんてものは存在しません。もちろん、基本的な考え方や理論(アルゴリズム)は存在しますし、それらを必要に応じて組み合わせる知識と言うか経験に基づく勘のようなものも必要ですが、「身につけた」なんて傲慢な言い方が出来る間は入門者レベルですね :-)
手法も、対象となるもの、使用する言語、何人で取り組むのか等々、さまざまな要因により一言で済ませられるほど簡単なものではありません。
知り合いに30年以上現場でトップを走ってるような人がいますが、未だに日々が研鑽だとおっしゃってますよ。
さらに言えば、プログラミングの場合、構文や手法は最低限の必須項目で、それ以上にセンスやプログラミング向きの能力等も必要です。残念ながらこれらは勉強して身につくものばかりとは限りません。
まず、基本的な入門書を読み、実際のプログラミングをして、そのレベルがすんなりとこなせなかったらプロになるのは諦めた方が良いかも。
ということは研究に必要なプログラミング手法はやはり基本的なもので十分ということなのですね。安心しました。
http://d.hatena.ne.jp/keyword/%a5%d7%a5%ed%a5%b0%a5%e9%a5%df%a5%...
プログラミングとは - はてなダイアリー
すみません、補足です。
「研究に使うレベル」というのを、プログラミングあるいはその周辺の研究と受け取ったので「プロになる」と書きましたが、それでよろしかったでしょうか?
もし、一般的な研究(コンピュータ以外)に必要なプログラミングと言う意味であれば、それはまた必要要件も変わってきます。
その場合は、まず対象をどれだけ良く把握しているかが重要で、手法等はそれほど必須のものではありません。必要になればプロに聞ける環境さえあれば十分です。
そうそう、プログラミングの研究じゃなくて、一般的な研究に必要なプログラミングですね。リンク先のような。でもプログラミングの研究のお話しも面白かったです。
http://cai.cs.shinshu-u.ac.jp/sugsi/info/lecture2.html
インターネット大学院カリキュラム
C言語の入門でよければこちらがおすすめです。
研究に使うレベルで、と言っても、どのような研究をされているかによって異なります。私は文系の研究者で、プログラミングの細かい所までは分かりませんが、本気で取り組んでから1年未満でだいたい基本的な部分は押さえたと思います。普段は秀丸やデータベースソフトのマクロ言語を少々いじる程度ですが、これでも全てを手作業でやるよりはるかに効率がよく、大変重宝しています。
ひとまずは「初心者」とでもでっかく書いてある入門書を、最初から最後まで丁寧に学習されてはどうでしょうか。
リンクがすごく参考になりました
プログラミング(というかシステム開発)から、こういった生命を問題領域として取り扱うだけの知識ということだと思います。非常に抽象的ですが・・・。
なるほど抽象的ですね。このそれぞれに対して手法があるんでしょうね。
1.システムを構成する分子と分子間の相互作用が同定できる段階。
2.システムの挙動を定量的に予測し、検証することができる段階。
3.システムの挙動を自在に制御することができる段階。
4.望みの性質を持つシステムを自在に設計することができる段階。
http://www.kumei.ne.jp/c_lang/
猫でもわかるプログラミング
指定のURLを読んでみたんですが、さらっと述べているだけで具体的なことは何も書いてませんね。
そもそもある特定のプログラミング手法を身につけたというならともかく、
この文章だけでは「外国語を身につけた」とほとんど同じような意味だと思います。
なんの?と聞き返す以外にないんですが・・・・
で、質問の意図するところが「どこまでやればプログラムが作れるといえるのか」ということだとすると、
アマチュアのうちは自分が満足できればそれでいいんじゃないかと思います。
中身がどんなコードだろうが、動作に一部問題があろうが、目的の動作さえすればそれでいいですし、
それをもって「プログラムを作れる」と言っていいと思います。
じゃあそれで飯を食うためにはどのレベルということになりますが、う〜ん、むずかしい。
実際ほとんど何もできないのにプロのソフト屋として飯を食ってる人は少なくないですからね。
悲しいことに、10人いたら2〜3人は頼むから何もしないで座っていてくれと言うレベルですから。
とりあえず「アマチュアレベル+人のコードを読むことができる」あたりを推しておきましょう。
困ったちゃんはだいたい人のコードを読めないor読まない人ですから、読んで理解できるぐらいなら
私は一緒に仕事をしてもかまわないと思います。
ちなみに研究に使うレベルってのは、アマチュアレベルで構わないと思いますよ。
研究用ってのは自分で使うためが目的でしょうから、必要な機能だけを手っ取り早く作るのが重要でしょう。
具体的な勉強方法ですが、これはもう
・ひたすらコードを書く。
・ひたすら人のコードを読む。
以外にありえないですね。語学と一緒です。
これで全然駄目なら素直にあきらめた方がいいです。残念ながらプログラムを作るということは
かなりの適性を要求されますので、向いてないならあきらめた方がいいと思います。
適性があるかどうかを簡単に判別する方法を一つ。
学生時代に数学が得意だったかでだいたい分かります。
数学が得意で、特に証明問題が得意だったというなら適性あり。
逆に数学は苦手で、公式暗記問題ならともかく証明問題は最悪だったというなら適性なし。
前者なら頑張ってみる。後者ならさくっとあきらめるという線がお勧めです。
証明問題に似ているのは実感してますが、語学のような勉強をするというのは発見でした。具体的な勉強方法もありがとうございます。
より具体的な質問ができるようになってからまた再質問させていただこうと思うので、皆様その時もよろしくお願い致します。
語学への喩えがわかりやすかったです。調べる方法への精通は他の学問でも重要なファーストステップですよね。身に付けたレベル、トップクラスのレベルがおぼろげにもわかりました。もしよかったらfugouさんのイメージした「一日1時間の勉強3年間」を
1ヶ月目:アルファベット習得
2〜6:あいさつ・平叙文
7〜12:疑問文・否定文
12〜:…
みたいな形式でおおざっぱに再回答してもらえたら嬉しいです。