アカウント名:
パスワード:
参考「プログラミングできる人とできない人との間の深い溝」 http://d.hatena.ne.jp/masatoi/20090707/1246965336 [hatena.ne.jp] 「どうしてプログラマに・・・プログラムが書けないのか?」 http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm [aoky.net] 「Javaスクールの危険」 http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B9%E3%8... [joelonsoftware.com]
「学位は持ってる = 優秀なプログラマ」ではないが、「独学でやりました(キリッ)=優秀なプログラマ」でもない。それだけの話だと思う。
ひょっとしたら、この記
> 「独学でやりました(キリッ)=優秀なプログラマ」でもない。
これは事実だな。黎明期からのパソコンユーザのはしくれとして、単なるアプリの利用者になるのではなく、自分のやりたいことをしてくれるプログラムを組む自由ってのは絶対に確保しなきゃならんと考えているのだけど、結局、自分はバグを量産するばかりで、本当に凄い連中には絶対に敵わないことを思い知ったよ。
configureスクリプトにパラメータを渡して、コンパイラを動かして独自のビルドを作る方法とかは分かるし、ちょっとしたソースの修正なら自分にもプログラムが読めなくはないのだから、クイックハックというかアレゲな修正というかそういうパッチみたいなコードなら書けるけど、何かやりたいと思った時にスクラッチから書くのは難しい。
『Cプログラミング診断室』 開院準備 ■レベル差 [pro.or.jp]にある通りだった。
> コンピュータが良くなり、より複雑な処理をするプログラムがどんどん増え てきました。> 大学には多数の情報関係の学科が新設され、コンピュータ専門学 校もどんどん増え、多数のプログラマを排出しました。> したがって、プログラ ムの開発技術の方も着実に進歩したと考えるのが当然でしょう。> いまでは、学 校で正規にプログラミング教育を受けた人達がプログラムを組むようになって きたので、> コンピュータメーカ、大手企業のソフト開発部門から中小ソフトハ ウスに至るまで、ソフト開発のレベルも自然に上がってきたと考えるべきでしょ う。> しかし、現実の姿は全く反対で、技術レベル差はますます広がり、下級レベ ルは「ごみプログラム」を大量生産しているだけになってしまいました。
再帰なんて基本テクニックでしょ?と言われても、自分はSchemeみたいにループを全て再帰で表現するような言語でマトモにプログラムを書ける気がしないッスよ。
数学がとっても苦手な人が、数学が必須の学科に行こうとは思わないですよね(多分)。
プログラミングも数学と同程度に向き不向きがはっきりしているものだと思う……下手すると数学以上かもしれないな、数学は苦手でも訓練で道具としてなら使えるレベルになるけどコード書きは使えるレベルになることすら難しいかも……のだけれども向かない人が情報関係の学科や専門学校に進んでしまうのは、高校までにプログラミングに触れる機会が少ないからかもしれませんね?
以前にも何度か/.で子供の頃からコンピュータ的なトピックが上がってたけど、こうした深刻な現状があるのなら、高校か中学で何かプログラミング言語を必修にしておくと効果的かも。その段階で「私には向かないわ」と自覚すれば、そういう人は関連学科に進学してこようとは思わないでしょうから。そういうもんでもないのかな。
一番とは書いていないのですが?
数学は道具として使われている歴史が古いですね。たとえば、仕事の中で数学をよく利用する分野として電気関係があります。たくさんの公式があり、その公式がどうして導出されているのかを理解したり、自分で式を導出するのはセンスが要ります。しかし、仕事としてその公式を使う分には、その式がどうやって導出されたかまで考える必要があることは稀ですし、式を仕事の道具として使うことができます。ですから、数学がまったくできないのは論外にせよ、得意でなくても頑張ればなんとかなるわけです。
プログラミングにも公式的なものがないわけではないですが、解決すべき問題は常に新しいもので、使える道具はいくらかの方法論とプログラミング言語くらいのものです。数学を道具として使うのとはまた違った難しさがあり、センスや向き不向きが強く出ると思うのですよね。
言い換えると、数学は道具として使うためによく整備されていて、応用されている分野では使える公式(道具)がたくさんあるということです。一方、プログラミングはそこまで整備されてないということかもしれません。レゴブロックみたいに、マクロをいくつか組み合わせただけでたいがいの問題が解決できる、くらいに整備されれば、適性とかセンスも要らなくなるかもしれませんね。
あなたはNEOGEO Xのコメントで大恥かいたばかりですから発言は慎重になさったほうがいいですよ
ACなら恥知らずに振舞えるってことですか。
どなたのことでしょう?
あなただけだよ。上下関係を見ているのは。
個人的には、同じ努力をするなら、向いているものを先に習得する方が、実感も湧きやすくて良いと思う。
自分はSchemeみたいにループを全て再帰で表現するような言語でマトモにプログラムを書ける気がしないッスよ。
繰り返し演算をループと捉えるか,結果に対する漸化式(再帰)と捉えるかの違いであって,ループを再帰で書いてるわけじゃないと思いますよそれが関数脳たる所以じゃないでしょうか
他の手続き型プログラミング言語の多くでループで実装されている処理って, 関数型言語のmapで実現されているので, 分けて考えないといけないのかと思います.
古典的手続き型プログラミング言語だと, 計算結果を次の計算の入力に使用する時間的な繰り返しと, 複数のデータに対して計算を行う空間的な繰り返しを一纏めにして「繰り返し」としちゃっているのが間違いの元のような. 古典的な手続き型言語だと, どちらも同じ繰り返し構文で実現できますが(同じだから良いわけではないけど), 関数型言語だと前者は再帰関数に適応することができますし後者はmap系関数に適応することができます.
そういう違いを考慮せず, ループに拘泥することがむしろ「古典的手続き脳」なんじゃないかと思います.
でも、そのmap系関数も元をたどれば再帰で書かれてて、ものすごーく基本的な要素と再帰だけで何でもできるんじゃーというのが関数型言語のセールスポイントかと思ってました。
ちなみに、ループにしろ再帰にしろ空間的な繰り返しと時間的繰り返しが同じ構文で実現できるのはただの偶然じゃなくて、何か数学的もしくは物理的な裏付けがあるような気がするんですよ。単なる素人の妄想ですけどね。何かの条件のもと空間と時間は等価だ。みたいな。
Scheme じゃなくて Haskell の話ですけどね。forM というもろ for ループを意識したと思われる関数があります。たぶん、関数脳の人もループで考えると楽な時があるんじゃないかな。
HaskellのforMはどっちかというとforEachとかfor〜inに近いでしょ。ループはあまり意識されない。
Schemeみたいにループを全て再帰で表現するような言語でマトモにプログラムを書ける気がしないッスよ
自分は関数型言語は得意で、むしろC言語やアセンブリ言語のような低レベルなコードのほうが苦手。俺の脳のアーキテクチャでは、アセンブリ言語は脳内レジスタが不足して実行不可能だ。得手不得手の問題のような気もするね。再帰のほうがシンプルになるプログラムをループで最適化するのは、むしろ難易度が高いこともあるし。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
プログラミングできる人とできない人との間の深い溝 (スコア:3, 参考になる)
参考
「プログラミングできる人とできない人との間の深い溝」 http://d.hatena.ne.jp/masatoi/20090707/1246965336 [hatena.ne.jp]
「どうしてプログラマに・・・プログラムが書けないのか?」 http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm [aoky.net]
「Javaスクールの危険」 http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B9%E3%8... [joelonsoftware.com]
「学位は持ってる = 優秀なプログラマ」ではないが、
「独学でやりました(キリッ)=優秀なプログラマ」でもない。
それだけの話だと思う。
ひょっとしたら、この記
Re:プログラミングできる人とできない人との間の深い溝 (スコア:5, 興味深い)
> 「独学でやりました(キリッ)=優秀なプログラマ」でもない。
これは事実だな。黎明期からのパソコンユーザのはしくれとして、単なるアプリの利用者になるのではなく、
自分のやりたいことをしてくれるプログラムを組む自由ってのは絶対に確保しなきゃならんと考えているのだけど、
結局、自分はバグを量産するばかりで、本当に凄い連中には絶対に敵わないことを思い知ったよ。
configureスクリプトにパラメータを渡して、コンパイラを動かして独自のビルドを作る方法とかは分かるし、
ちょっとしたソースの修正なら自分にもプログラムが読めなくはないのだから、クイックハックというかアレゲな修正というか
そういうパッチみたいなコードなら書けるけど、何かやりたいと思った時にスクラッチから書くのは難しい。
『Cプログラミング診断室』 開院準備 ■レベル差 [pro.or.jp]にある通りだった。
> コンピュータが良くなり、より複雑な処理をするプログラムがどんどん増え てきました。
> 大学には多数の情報関係の学科が新設され、コンピュータ専門学 校もどんどん増え、多数のプログラマを排出しました。
> したがって、プログラ ムの開発技術の方も着実に進歩したと考えるのが当然でしょう。
> いまでは、学 校で正規にプログラミング教育を受けた人達がプログラムを組むようになって きたので、
> コンピュータメーカ、大手企業のソフト開発部門から中小ソフトハ ウスに至るまで、ソフト開発のレベルも自然に上がってきたと考えるべきでしょ う。
> しかし、現実の姿は全く反対で、技術レベル差はますます広がり、下級レベ ルは「ごみプログラム」を大量生産しているだけになってしまいました。
再帰なんて基本テクニックでしょ?と言われても、
自分はSchemeみたいにループを全て再帰で表現するような言語でマトモにプログラムを書ける気がしないッスよ。
Re:プログラミングできる人とできない人との間の深い溝 (スコア:3)
数学がとっても苦手な人が、数学が必須の学科に行こうとは思わないですよね(多分)。
プログラミングも数学と同程度に向き不向きがはっきりしているものだと思う……下手すると
数学以上かもしれないな、数学は苦手でも訓練で道具としてなら使えるレベルになるけど
コード書きは使えるレベルになることすら難しいかも……のだけれども
向かない人が情報関係の学科や専門学校に進んでしまうのは、高校までにプログラミングに
触れる機会が少ないからかもしれませんね?
以前にも何度か/.で子供の頃からコンピュータ的なトピックが上がってたけど、こうした深刻な
現状があるのなら、高校か中学で何かプログラミング言語を必修にしておくと効果的かも。
その段階で「私には向かないわ」と自覚すれば、そういう人は関連学科に進学してこようとは
思わないでしょうから。そういうもんでもないのかな。
Re:プログラミングできる人とできない人との間の深い溝 (スコア:3)
一番とは書いていないのですが?
数学は道具として使われている歴史が古いですね。たとえば、仕事の中で数学を
よく利用する分野として電気関係があります。たくさんの公式があり、その公式が
どうして導出されているのかを理解したり、自分で式を導出するのはセンスが要ります。
しかし、仕事としてその公式を使う分には、その式がどうやって導出されたかまで考える
必要があることは稀ですし、式を仕事の道具として使うことができます。ですから、数学が
まったくできないのは論外にせよ、得意でなくても頑張ればなんとかなるわけです。
プログラミングにも公式的なものがないわけではないですが、解決すべき問題は
常に新しいもので、使える道具はいくらかの方法論とプログラミング言語くらいのものです。
数学を道具として使うのとはまた違った難しさがあり、センスや向き不向きが強く出る
と思うのですよね。
言い換えると、数学は道具として使うためによく整備されていて、応用されている分野では
使える公式(道具)がたくさんあるということです。一方、プログラミングはそこまで整備されてない
ということかもしれません。レゴブロックみたいに、マクロをいくつか組み合わせただけで
たいがいの問題が解決できる、くらいに整備されれば、適性とかセンスも要らなくなるかもしれませんね。
Re: (スコア:0)
あなたはNEOGEO Xのコメントで大恥かいたばかりですから発言は慎重になさったほうがいいですよ
Re: (スコア:0)
ACなら恥知らずに振舞えるってことですか。
Re: (スコア:0)
どなたのことでしょう?
Re: (スコア:0)
あなただけだよ。上下関係を見ているのは。
個人的には、
同じ努力をするなら、向いているものを先に習得する方が、実感も湧きやすくて良いと思う。
Re: (スコア:0)
自分はSchemeみたいにループを全て再帰で表現するような言語でマトモにプログラムを書ける気がしないッスよ。
繰り返し演算をループと捉えるか,
結果に対する漸化式(再帰)と捉えるかの違いであって,
ループを再帰で書いてるわけじゃないと思いますよ
それが関数脳たる所以じゃないでしょうか
Re:プログラミングできる人とできない人との間の深い溝 (スコア:2)
他の手続き型プログラミング言語の多くでループで実装されている処理って, 関数型言語のmapで実現されているので, 分けて考えないといけないのかと思います.
古典的手続き型プログラミング言語だと, 計算結果を次の計算の入力に使用する時間的な繰り返しと, 複数のデータに対して計算を行う空間的な繰り返しを一纏めにして「繰り返し」としちゃっているのが間違いの元のような. 古典的な手続き型言語だと, どちらも同じ繰り返し構文で実現できますが(同じだから良いわけではないけど), 関数型言語だと前者は再帰関数に適応することができますし後者はmap系関数に適応することができます.
そういう違いを考慮せず, ループに拘泥することがむしろ「古典的手続き脳」なんじゃないかと思います.
Re:プログラミングできる人とできない人との間の深い溝 (スコア:1)
でも、そのmap系関数も元をたどれば再帰で書かれてて、
ものすごーく基本的な要素と再帰だけで何でもできるんじゃー
というのが関数型言語のセールスポイントかと思ってました。
ちなみに、ループにしろ再帰にしろ空間的な繰り返しと時間的繰り返しが
同じ構文で実現できるのはただの偶然じゃなくて、
何か数学的もしくは物理的な裏付けがあるような気がするんですよ。
単なる素人の妄想ですけどね。何かの条件のもと空間と時間は等価だ。みたいな。
Re: (スコア:0)
Scheme じゃなくて Haskell の話ですけどね。
forM というもろ for ループを意識したと思われる関数があります。
たぶん、関数脳の人もループで考えると楽な時があるんじゃないかな。
Re: (スコア:0)
HaskellのforMはどっちかというとforEachとかfor〜inに近いでしょ。
ループはあまり意識されない。
Re: (スコア:0)
Schemeみたいにループを全て再帰で表現するような言語でマトモにプログラムを書ける気がしないッスよ
自分は関数型言語は得意で、むしろC言語やアセンブリ言語のような低レベルなコードのほうが苦手。
俺の脳のアーキテクチャでは、アセンブリ言語は脳内レジスタが不足して実行不可能だ。
得手不得手の問題のような気もするね。
再帰のほうがシンプルになるプログラムをループで最適化するのは、むしろ難易度が高いこともあるし。