「1つのプログラミング言語を学んだら別の言語も簡単に習得できる」という説は本当なのか?
プログラミング言語を教える人々の中には、「1つの言語を習得することができれば、新たな言語も簡単に習得できる」と主張する人が多く存在します。
ところが、ミシガン大学で電気工学とコンピューターサイエンスの教授を務めるMark Guzdial氏はこの主張に疑問を投げかけており、現代におけるプログラミング言語習得の実情にはそぐわないと主張しています。
(以下略、続きはソースでご確認下さい)
Gigazine 2021年06月25日 06時00分
https://gigazine.net/news/20210625-first-programming-language-important/
言語パラダイムという概念が抜けている記事かと
同じ言語パラダイムの言語や、影響を与えたり関連が深い言語同士は習得が簡単になる
だから学生の時に複数の言語パラダイムの言語を少しずつ触っておくのが重要
現実の実務能力で考えると、API、ライブラリやフレームワークなど
短期的に変わる部分の知識、能力が重要なため言語より上のレイヤー起因で
他の言語に乗り換えにくくなっている。>>1の記事は的外れ
>>1
それはレベルが高い話。
1つ目の言語を習得できなかったら、高い確率で2つ目も3つ目も無理。
>>1
応用の効かないバカもプログラムするようになったから、
これまでの常識は通用しないって話かよ
バカは昔からいただろってw
最近久しぶりに研究でプログラミングするようになって
Pythonを使ったのだが、簡単でびっくりしたわ
昔はJavaとかC++とか使ってたんだが、Python自体は半日でほぼ使いこなせるようになったし
機械学習も数日で簡単にできるようになった
なので>>1は言っていることがよくわからんのだが、どゆこと?
Pythonなんて初心者向けの言語は関係ないって?でも今どき、少なくとも理系の研究者では
Pythonつかってる人むっちゃ多いと思うが
>>130
>データサイエンティストになりたい学生はC言語よりもR言語やPythonを学ぶ方が理にかなっており
記法が別物のプログラムが沢山あるからってことみたいよ
R言語もレアな気がするけど、データサイエンティストとやらの間でもポピュラーなんだろうか
>>130
機械学習ってそれライブラリ使っただけだろ
元はCで作られてるしCライブラリも当然ある
NumpyだってCで開発だしな
てかPythonで書かれた野良ライブラリつかうと読み取くだけで何日もかかる
読ませるようにはできてないよね
Pythonもアルゴリズムという点で言えばC++と変わらんしわざわざ上げる必要もないわ
その辺の設計方法を知ってなきゃ簡単とは言えないわ
個人的にはselfのオンパレードを何とかやっつけたいんだけどなかなか難しいな
プログラムを習う前に、論理的思考、優先順序の構築能力位は身につけておかないと
プログラム文法を習っても効率の良いわかりやすくスタイリッシュなソフトを記述出来ない。
アセンブラとCやれば、どんなプログラミング言語も習得できるよ
条件分岐や比較・演算などコーディングの基礎は同じ
>>1
(C++, Haskell, Common Lisp)
最初にこの3つの中の1つを学び
次はその残りのうちから1つ
こういうのは難しそうだw
やっぱパラダイム共有したのじゃないとキツイ
6/27
1つのプログラミング言語を学んだら、別の言語も簡単に習得できるの?
https://hayabusa9.5ch.net/test/read.cgi/news/1624778236/1,5
4/5
【IT】一流プログラマーになるためには「1万時間の法則」ならぬ「3万時間の法則」が適用される [田杉山脈★]
https://egg.5ch.net/test/read.cgi/bizplus/1617604938/226,597
プログラミング言語は多種多様で類似するものもあれば独自の異次元思想まで存在するからねー
プログラムなんて判断と処理の羅列に過ぎない
あとはセンス
2つがほぼ同じ奴だとあまり意味ないが
あとはライブラリ豊富な奴を覚えて他の言語でライブラリ内とかか?
そうだね
いまは文法そのものを覚えるというより、
便利なライブラリをどれだけ知っていて使いこなせるかが重要
で、論文も盗用し問題になる
>>4
ほんこれ
ふたつくらい身につければ、他もなんとなくで扱えるようになる
で、なんとなく調べながら使ってるうちに、身につく
チュートリアルをこなした後は、とにかく手を動かして身に付けることだな
それが旧世代の考え
今はどうなの?
コード量が増えると「C++使わないと収拾つかなくなる」と思い移行した。
printfなどは桁数フォーマット指定などが上位互換でなかったのでC流儀を残してある
C++に移行できないってどういうことなんだ?
オブジェクト思考の設計ができなかったという事じゃ?
>>5
オブジェクト指向だけだった昔のC++ならいざ知らず、関数型も含めてありとあらゆる新機能を持ち込む今のC++を使いこなせる奴など、殆どいない。
大抵はオブジェクト指向をIDEの支援でしこしこしている程度だからな。
>>5
構造化プログラミングより後のなんたら思想とかは完全にファッションだからなあ。
システム会社以外への論理的なロジック説明は、フロー図があれば十分。
>>5
できないんじゃなくて
しないんじゃない
手伝うときは++使うけど
一人でやるならCでやってるわ
事態を複雑にしてるだけなんだもんw
一人出来るプログラムしか書かないならcで十分やがcで書かれた巨大システムは悲惨。
>>187
C++はともかく、C#を始めて頃
Cのように細かくハード寄りの事を
やるのにスゲエ手間がかかって閉口したわ。
より高級な言語は、用意されたライブラリや
フレームワークを使い、型にはまった処理を
少ないステップ数で書くのには適してるがな。
cの時点でオブジェクト指向的なことしてた人はいた
すごい読みやすく、よく整理されてて簡単に見えるコード書いてた
みんなどうしてるかな
動的型付から入った人の中には分かってない人が多い印象
そりゃそうだ
結局プログラミング教育より数学の強化なのにね
高校数学を習得してれば次々に言語を使えるようになる
使う文字も語順も発音も違うプログラミング言語が出てきたら
習得も大変だろうな
さらに、アラビア文字みたいに右から左に書く言語だと
もう勉強する気もなくなるわ
>>9
自分は昔phpで仕事してた時に、フランス人の書いたphpは解読できなかったw
php自体は英語だけど、コメントはフランス語、変数名はフランス語由来の単語だから、皆目見当がつかなくてギブアップした
日本語も右から左に書いていた
ほんの70年前までは
サーバサイドでは動機非同期に癖があるからもにょる
オブジェクト指向の手続型
lisp
SQL
アセンブラ
3、ないし4つ覚えればほぼ大丈夫だろ
LISPとアセンブラはしらんでも問題ないような
>>31
アセンブラが使いこなせれば、たいていのプログラミング言語は理解できると思う
むしろアセンブラとLisp的なやつが出来たほうがいい。
一応プログラマならアセンブラはある程度できた方が良いとは思うが、
アセンブラは泥臭い現実世界を記述し、現代の先進的な言語は美しい抽象世界を記述するからなあ。
まあ アセンブラ最強だろうな
レジスタの概念(他の言語には無い) と
命令語、データ、アドレス(ポインタ)の区別が付くから ポインタで悩むことは無い
Basic、Z80アセンブラ、C、Postscript、VBA、Delphi、R、と進んできたが、
アセンブラ・Postscript が多少異質だったものの、基本は全部同じだと思う。
>>66
なるほど。ポインタで引っかかる意味が分からなかった。
ポインタの概念は別に難しくないのよ
Cでの仕様や記法がわけわからんのよ
>>14
prologとforthがぬけてる
sqlは実務で必要になればってレベル
アセンブラはどういうアーキテクチャをやるのか
昔々の正統派か、riscが流行り始めた頃か、その後か
教養としての言語は学ぶべきだね
万人受けはしないが、FORTHが最強だろうな
個人的にはPostScriptが面白かった
数学的素養とはアルゴリズムの話かな。
言語(の文法みたいなもの)は相対的に重要でなくなっているんじゃないの?
言語だけ理解していてもフレームワークなんかも違うからそれが使えないと意味がない。
例えばCとLispみたいに体系の差が大きすぎるのは論外だろうな
Pythonだとcupyに丸投げしたら動いてくれましたが
そういう問題ではなくて直接扱うって意味ですか
グラフィックスは行列分からなければ無理だしね
CUDAとかOpenCLとか?
たしかにCUDA使って動くプログラムはできるんだが最適化となるとハードルが高い
全然速くならない
プログラムを組む流れが分かって来ると
ここで次はこれをしたいけどこの言語ではどう書くのかな?
という問題意識を持てるようになって、
要するにググりまくって部分部分をコピペして変数名関数名クラス名
書きかえまくって、何とか動くものが出来る!
というのならまああり得る
だがメモリ操作の分かってない人がVBAやPythonやPHPだけ
切った貼ったコピペで覚えてるけどCは分らんとか
昔ながらの手続き型のプログラムしか分からん人が
何でオブジェクト化なんてするんだ?とか
あるいは何でもかんでも関数に纏めるなよ!ラムダ式とか何なんだよ!
こんな矢印⇒書いてんじゃねーよ!!!って関数型言語辺りで吠えだすとか色々あるw
C++さえ使えれば他の言語無視しても無問題
どっから何を始めたらいい?プログラムは全く経験なし。
スマホアプリ用で万能なのを目指すならJavaScriptを使った
Reactが一番まし
ありがとう。
調べて挑戦してみる。
ずいぶん変わったんだろうな
0→1 大変
1→2 意外に大変
2→3 嘘みたいに楽
それ以降 最低限はすぐにできるようになる
馴染むとか以前に考え方を理解するから習得が早くなる。俺も経験してるし、周りもそう。
言語を学べたとしても壁は高い
訂正:どの言語を学んでも壁は高い
ポインター操作
オブジェクトの実装
GUI,WYSIWYG
結局は個人の資質かなとぼんやりした結論
本当の意味で触って理解した人は
次は基礎部分は簡単。
もちろん言語固有のところは多少ムズいけど。
そしてプロレベルという意味なら次の言語でも
もちろんすごく難しい。
ついつい自分の得意な言語呼び出したりしてやってしまうw
Scheme やって
Squeak をやる
その後
C をやると関数ポインタを使いまくる奴になれる
Java, Ruby, Python が快適だと実感できる
そして
Prolog をやってショックを受ける
最後に
C++ の記述の癖に困惑する
この記事で言っているのは
・数学が得意な人は様々な言語を学ぶのも容易だった。
・現代は様々な人がプログラム言語を学んでおり、(数学が得意な人と違って)複数の言語を学ぶのが得意とは
限らない。
うーん、なんか違うような気がします。1960年代後半で数学というと、
C言語(1969年)とか、PL/Iくらいしかないでしょうし。 今は言語も多分100以上ありますよね。
そもそも、一つのプログラム言語を学ぶと~って、
語学でいうと「ラテン語を学べばそこから派生した他の言語を習得するのも容易」みたいな話だと思うのですが。。
この記事の数学は数値計算的な意味じゃなく計算理論関係だと思う
昔の人にとっての言語は脳内のノイマン型コンピュータと同じ動きを
目の前のコンピュータで実現するための命令信号にすぎなかったから
文法のバリエーションは割とどうでもよかったって話
クローンとかiPS細胞とかの話で、
一番最初に心臓細胞が生成されて、
その心臓細胞が別の信号物質を作って分泌し始めると
それをひろった細胞が肺細胞を作り始めて、って感じで
人間の形成はシーケンシャルになってることが去年分かったンだけど、
生命の神秘がシーケンシャルだった、ってことに驚きで、
AIだとか言ってるけど本質はシーケンシャルなんじゃマイカ、
ってことになってきた
最近はpromiseであきらめる人が多いな
async awaitはなかなか大掛かりだね
あるいは並列化とか
どっちも何が難しいのか分からない
将来はマシン語を使いこなすのがみんなの夢になってるだ
コボルができれば一生食っていけるらしい。
分かる気がする
そもそも同じプログラム言語でも進化するから学び終えるなんてことはないけどね
Webフレームワーク(フロント・バックエンド)の細かな機能や
iPhoneやAndroidのライブラリの細かな機能を知ってるほうが有能扱いされる
プログラマーのほうが圧倒的多数だからな
各々のAPIの習得が重要だからやろ?
ほとんどが ALGOL の子孫なので
PYTHON
C
assembler
Perl
LISP
FORTH
ぐらいを適当につまみ食いだいたいおk
lispはつまみ食いできる代物じゃないとおもう
ラムダ式を変数で捕まえる感覚だけつまみ食いすればいいよ。
昔みたいに細かなコンパイラとかの原理知らなくてもいいから
空いた勉強の時間を機械学習ライブラリとか最新の技術バシバシ使う時間にして
新しいイノベーション起こしたほうがいいって話だった
純粋関数型は毛色がかなり違うよね。
新しいフレームワークを覚えるのが辛い
と言ってももうプログラム組まなくなっちゃったけど。
言語は目的(アウトプット)のための手段に過ぎないのに
金を稼ぐためにか、言語が増え過ぎで
これから始めようとする人にはやさしくないな
既存プログラムのメンテとか移植もあるし
SDGsとか言うなら、もう言語を簡単に増やすなよ
言語を覚えるやり方だと応用がきかない。
オブジェクト指向とかもな。
単なるアルゴリズムの指向パターンでしかないしな。
BASICとFORTRANをマスターし
アセンブラまで手を出したが
C言語まではギリギリだな
今はVBAすらよくわからん
似たような感じだわ
独学でベーシック覚えて学校でFOTRUN勉強し
後はアセンブラを86 68を覚えて
c言語を仕事で使って、C++、遊びでD言語覚えてる最中で
転職してまったくやってないw
記事結論の、「昔は数学的バックグラウンドを前提としていたから別言語の習得も容易」の結論はイマイチ納得いかん。
>>68
BASICとZ80アセンブラとC、Objective-Cもちょっとだけ。
読むだけなら68kアセンブラとVBとJAVAも分からなくもない。
俺みたいなアマチュアにはC++は大規模すぎる。
ほかの言語でも最低限動くだけのコードなら
なんとかこしらえることはできるだろうよ
だがそんな書き捨てレベルのコードは負債でしかない
アセンブラを学べば何とかなるぞ
今やるならRISC系が一つ欲しいな。
いまでも遅延スロットある?
8086は互換性問題を抱えているから純粋にやるなら6800でいいだろう
インテル系を無理にやる必要はない
というか、実行コードとはなんぞって話でいいんだからcometで十分
80系と68系は考え方の違いを知るのに役に立つ。
80系から入って68系のアドレッシングモードの豊富さを知るとびっくりするが、
どういう局面で使うんだろうと感じることも多い。
80系は68系に比べるとダサいが、プロテクトモードを学ぶとその膨大さに驚く。
RISCをやるとそんな複雑なものが無い世界というのが分かる。
80系や68系がアセンブリコードレベルで上位の概念に近づこうとして、
結局必ずしも成功しなかったことも分かる。
新たなアーキテクチャを組み立てる人はエンジニアとして最優秀だと思うが、
彼をしても20年先は見通せないという話だな。
>>93
アセンブラで書く必要があるかと言えば、もう一般にはない
なぜアセンブラを知るかと言えば、高水準言語がどのように機械が実行できるコードに落ちるか、そこを学ぶためだと思う
となれば、単純なものでいい
それじゃ意味が無いというなら、最初のc言語を調べるといい
殆どアセンブラと一対一
アーキテクチャの話は誰が最適化するか、という話。
cpu側でやるのか、コンパイラに全てお任せするのか
cpuが複雑化するのはわかっていたことだけれど、当時は選択肢が無かった
コンパイラが最適化する能力を持つにはメモリや二次記憶が多く必要だから
1990年頃?だと思うけど、あのあたりのbitが手に入るなら参考になるよ
>>98
OSの一部は今もアセンブラで書かれる。アセンブラはシステム・プログラミングには必須。
(コンパイラのインライン・アセンブラを使うかも知れんが、それもアセンブラ)
あやしいな。今、Linuxのソースツリーみてみたけど、アッセンブラはなかったよ。
よく探せば見つかるかもしれないが、
>>201
何を見てんだか、このアホは。
$ find linux-4.4.0/arch -name “*.S” | wc -l
1384
>>98
というか、ムーアの法則は既に定説の時代で、その時に年々増加するトランジスタをどこに割り振るのが最適解か?
という問題で68000は間違ったんだと思うよ。当時学生だった自分はあの直交した美しいアーキテクチャーが生き残るものと考えた。
一方「シリコンOS」を目指した80286はその野心は素晴らしかったと思う。今あんな技術的ジャンプをメインストリームの商品で出来ないだろ。
bitは当時定期購読して読んでいたよ。
アセンブラをやるべきなのは、やっぱりコンピュータを生で触ってる感を得る事かなあ。
CPUの動きを実感すると、どう書いた方が効率的に動くかを推定することが出来るようになる。
少なくともコンピュータが苦手とするやり方を選ばなくなる。
同じアルゴリズムでも書き方で効率が一桁違うなんて当たり前にあるからねえ。
cとオブジェクト指向とphpでおっけー
C学んでおけばわりとなんでもとっつきやすい気はするけど、そうでもないのだろうか。
今はPythonから入ってんだっけか?
「概念を学ぶことができたなら、構文が違う別のプログラミング言語にも同様の概念を適用できる」
「しかし、これは基本的な概念が異なるプログラミング言語には応用できない」
そらせやろ
要は実情にそぐわない必ずしも言えないという話だがそれはそういう場合もあるのは当然であって
いちいち否定することじゃないと思うんだが。だからってどうするって話がないと殆ど意味がない
学校で教える必要はないとか、とりあえず○言語やるとか無意味である、というわけでもないんだろ?
得意でない人は、目に見えるコードの切り貼りと模倣に集中しすぎる
iPhoneとAndroidの両方で動くアプリを一度で作る方法は?
MAUI
ネイティブより処理遅いアプリしか作れなさそう
ちょまどに聞け
>現代におけるプログラミング言語習得の実情には
つまりCOBOLかCかフォートランかJAVAか、
という言語論だったはずが、マクロが雨後の筍のように乱立していて、
各会社のマクロやAPIには一貫性がないからどれか覚えても
他には全然通用しませんゼ、って話でOK?
ほぼ言語的にはC言語が制覇した感じだけどな。
授業でCかjava習ってればどーにでもなる。
微量の電気信号とタンパク質の塊
方程式の様な書き方するから
そんだけ?
だったらむしろ国語のほうが大事な気がするんだよな
プログラムで何をしようとしているかにもよるが
多くの人が、求めたい結果のプログラムのために数学が必要になったり
2進数、16進数の計算が必要になったりしてくるから
>>118
国語、超大事
>>103
CPUは突き詰めると足し算回路、それに掛ける命令は数学そのもの
むしろ国語においても数学においてもプログラミングにおいてもロジックが重要というだけ。
そしてロジックは国語より数学に近いところにある。
>>168
日本ではロジックを国語の時間に教えている、事になっている
だがそのせいで厳密性を欠く議論を学んでしまう傾向にある
GOTO 1
AIがコーディングすれば良くない?
AI「ワカリマシタ」
翻訳より楽じゃね
仕事では全く役に立たない趣味レベルと分かった
すなわち最初にCを習得するとすべての言語が使える
最初にpythonやRubyを習得すると、Rは使えない
最初にVBAを習得するとなにもできない
誰だろ?
そもそも言語を理解できない半島人には無理
それが事故らないとか商売できるかどうかは別として。
トラックやバスはきつくないか?
LispとC比べたらオートバイと乗用車くらいに違うかも
こりゃ今のプログラムとは完全に別もんだなと思ったよ
objetive-cもC言語を知らないからか覚えにくかった
java,C#.NET,VB.NET,PL/SQL,ruby,python,Swift,JavaScriptあたりは横移動してもすんなり馴染めた
手続き型と関数型じゃね?
今だったら Haskell かもね。
外国語と同じだろ
似た言語もあれば
似てない言語もある
得意言語の訛りは
なかなか抜けないけどね
BASIC→C→Perl→C#
C++とかJavaとかやらないでアプリで1億円稼いだ
引用元: ・【話題】「1つのプログラミング言語を学んだら別の言語も簡単に習得できる」という説は現代の実情にそぐわないという主張 [すらいむ★]