学習する「間違った」言語を選択することに多くの恐れがあるように見えるのはなぜですか?[閉まっている]


28

おそらく私だけかもしれませんが、現在のCS学生として、このサイトや他の場所で、「xに使用する言語は?」だけでなく、すでに多くの質問に出くわしました。しかし、「誰もがまだ言語Yを使用していますか?」私の最初のCSクラスはSchemeで教えられましたが、それが間違っていなければ、(少なくともJava、PHP、Pythonなどの言語と比較して)広く使用されていません。私のクラスメートの多くは、二度と使用する必要のない言語を習得しなければならないという考えに口を閉ざしましたが、あまり人気のない言語を学ぶことに対するこの恐怖の多くがどこから来たのかはよくわかりません。いいえ、取得した仕事でSchemeを使用することはできませんが、Schemeを使用することを学んだことを確かに後悔していません(ただし、非常に初心者であり、その1学期ではあまり詳しくありません)。今学期は検索エンジンクラスを受講していますが、これはPerlで行われ、再びクラスメートが言語の選択について不平を言っているのを見ています。好きな言語を持っていることや他の言語を嫌うことは理解できますが、そもそもそれを習得するのに苦労する人がいるのはなぜですか?「間違った」言語を本当に学べますか?SchemeやHaskellなどの良いメンタルエクササイズを他に何も学んでいないのに、少なくとも問題を解決するさまざまな方法に触れるのに役立つのではないでしょうか。


興味深いことに、CS教育の最初の2年間はC#とJavaのみに関係していましたが、最初の協同組合の配置で何を使用したのでしょうか?「P」で始まる4文字の単語。
アノン。

6
@Shewbox、あなたは正しい、彼らは間違っています、あなたはクロスラーニングの利点を得るでしょう、彼らはしません。話の終わり。
オコド

7
彼らは雇用管理者とSEO(検索エンジン最適化)を行っています。
rwong

1
@rwong:残念なことに、一部のリクワイターはキーワードマッチでスパムを送信するため、「XXXを1回使用したことがあるので、もう二度と触れない」という難しい方法を学ばなければなりませんでした。

1
@JB:99%の人が、他の人にキスをしているように見せます。
マイケルK

回答:


27

CS学位のポイントは、C#とJavaを教えることではなく、自分で学べることです。プログラミングと計算について教えます。言語は単なる詳細です。プログラミングのキャリアの中で、多くの言語を使用します。今日はJavaまたはC#かもしれませんが、10年または15年後にはErlangまたはまだ発明されていないものになるかもしれません。さまざまなプログラミングスタイルと問題を攻撃するさまざまな方法を学ぶことは、1つの言語を学ぶことよりもはるかに重要です。


まさに-私の学位は、JavaやC#はもちろんC ++よりも前のものです。私たちは主にパスカルで教えられていましたが、初期段階からさまざまな言語の問題を抱えていましたが、2年目には「今月の言語」というコースがありました。主な原因OOPの(私は一度それを知らなかったが)、それは私を教えて-私は今、どんなSimulaのコードを書くことができないチャンスがないのに
Murph

17

あなたの第一言語はあなたが他の方法で学ぶまであなたの考え方を形作るからです。

計算能力がなく(初めてのプログラマー)、最初に学ぶ言語が「基本的」すぎる場合、オブジェクト指向、多重ディスパッチ、継承、ファーストクラス関数、メタプログラミングなどの高次の概念を知らないかもしれません。

あなたが最初に学ぶ言語は、通常、計算思考への最初の進出に結びついています。ジミー、あなたがA、B、Cのシンボルで構成される前の世界を誰かに言ったら、あなたの考えはすべてA、B、Cの観点からのものになります。ある日まで、X 、Y、およびZの概念。ABCだけを知っていれば、これを知る方法はありません。

誰かの第一言語に最も関心を持っている人は、おそらく暗闇を乗り越えて戦った賢明なプログラマーでしょう。ああ、今、私はファーストクラスの機能が何であるか知っています。男、2年前に継承と依存関係の注入について知っていたらよかったのに!

あなたの第一言語は、後続の言語に関するあなたの態度ほど重要ではありません。BASIC / C / Perl / PHP /などを超えた世界があることを知るために、あなたがはるかに先を見ることができるなら、あなたはゲームのはるか先を行っています。多くの人々が関数型言語の狂信者である理由は、多くの活発に開発された言語がそれらに向かって収束しているからです。


1
ただし、これらの基本的な概念から始める必要があります。誰かが新しい概念を学ぶとき(例としてデザインパターンを取る)、彼らはしばらくの間どこでもそれを使用する傾向があります。基本的な学習プログラムの構造とプログラマーのように考える方法でプログラミングした最初の5年間を費やしていなかったなら、オブジェクト指向になったとき、私は集中することができなかった手続きの部分を学ぶのに忙しかったでしょうオブジェクト指向部分。そうは言っても、「あなたの最初の言語は、後の言語に関するあなたの態度ほど重要ではない」と概念のために+1されます。
マイケルK

私はそれを追加することを考えました。基本的な言語にはその場所がないと言ったわけではありませんでした。実際、彼らは(初期の学習段階で)そうします。言及しなかった。
マークカンラス

ああ、マイケル、あなたの編集はもっと上品です、はははは。
マークカンラス

OPのクラスメートが懸念している場合、Schemeは学習するのが間違っている言語であるため、おそらくそれほど賢明ではありません。:)
デビッドモールズ

いくつかの言語は実際には単純である一方で複雑な構文を持ち(C派生)、実際には複雑である一方で単純な構文を持っています(Groovy)。つまり、C / C ++またはObjective-Cでは、アクティブなコードスコープ内では非常に宣言的で手続き的なものですが、Groovyのようなものには、構文シュガーによって「隠されている」多くのことがあります。初心者への私の提案は、一般に、コンピューターが実際にどのように機能するかをより厳密に反映した難しい構文言語を使用することです。その知識は他の言語の使用を簡素化するからです。
dcgregorya

11

私が大学にいたとき、経済学を専攻することに決めた多くの人々は、それが彼らが特に興味を持っているか、または情熱を持っているからではなく、彼らが彼らに良い仕事をするだろうと思ったからです。

文学への最初の関心の副作用として受けた授業が私を夢中にしたので、私は東アジア研究を専攻しました。私がドイツに行ったのは、交換プログラムをやりたいと思ったからです。そこで私はほとんどの時間を日本学と中国学のプログラムに費やしました。私は自分が一番興味のあることを勉強しました。幼少期にすでにかなりの量のハックをしていたので、大学でコンピューター関連のことを勉強しないことにしましたが、プログラミングとインターネットの理解に時間を費やしました。 、私はそれらすべての利益を結合することに成功した良い仕事を得た。

違いは、キャリアと学習のために学習する人との間です。キャリアリストは、彼らが 『間違ったもの』を研究したこと、そしてそれが 『私を仕事に着地させる正しいもの』ではないので後悔することを心配しています。学習のために学習する人は、比較的管理しやすい圧力であらゆる種類の分野を探索するのに4年間費やすことができることに気付きます。職業人は、学校の仕事は彼らに何かを教えることだと考えています。学習者は、なじみのない地域に出会ったときに物事を把握し、彼らにぴったりの仕事を見つける可能性が高くなります。キャリアリストは、最終的に第3層の会社で第2レートの会計士となり、請求書を支払い、上司にresします。

はい、これらはアーキタイプであり、誰もがプラグマティズムと情熱のバランスを取る必要がありますが、それは本質的な違いです。確かに、プログラマーの美学を持つ人も質問をするかもしれませんが、「私の時間の無駄が最も少なくなるのはどれか」という文脈で。しかし、私の考えでは、キャリアストは学習者よりも間違いを犯すことを恐れており、学習者は間違いを恐れないため、学習者は一般に優れたプログラマーになります。プログラマーと同様に、学習者はスキルを追求する上で失敗を受け入れます。


9

はい、SchemeやHaskellのような関数型言語の学習は、関数型プログラミングの入門として適しています。クラスメートがPerlについて不平を言っている限り、Perlは以前ほど人気が​​ありませんが、ビジネスでまだ広く使用されている言語です。

現実の世界で使用される実用的な言語を学びたいクラスメートを理解できますが、経験豊富なプログラマーであり、いくつかのプログラミングパラダイムにさらされた後、新しい言語を学ぶことはほとんど拾い上げるだけの点を見落としていると思います新しい構文。したがって、概念に触れている限り、最終的に雇用主が好む言語で「専門化」することができます。


5

おそらく、人々はエドガー・ダイクストラの古典的なトローリングなどの声明の影響を受けているため、「BASICに以前にさらされた学生に良いプログラミングを教えることは事実上不可能です:潜在的なプログラマーとして、彼らは再生の希望を超えて精神的に切断されています」(リンク

「間違った」言語を学ぶと、永久的な脳損傷を被る恐れがあります。あなたのPerlの例は驚くべきことではありません。なぜならPerlはしばしば中傷者からこのような批判を呼び起こす言語の1つだからです。


5

第一言語は、構文やイディオムではなく、概念に焦点を合わせる必要があります。それをガイドラインとして使用する:

  • Perlは、特別な変数と難解な構文の多くの検索を意​​味します
  • PHPは、その有機的な成長のために概念を混合することを意味します
  • Javaは、すべてが実際にオブジェクトではないため、少し混乱を意味します
  • Assembly / C / C ++は、大量の低レベルのものを意味します。これは、組み込みシステムの開発を行いたい場合に優れていますが、高レベルの概念を損ないます
  • SQLは、自然言語をコードおよびデータ構造にマッピングする方法(およびできない方法)を確認するのに役立ちます
  • Visual Basic for Applicationsは、特別な目的の使い捨てのものに焦点を合わせているため、適切なエラー処理やリファクタリングなどの重要な概念をスキップするのは非常に簡単です。
  • LISPは単純な構文のように見えますが、完全な名前の詳細な知識なしでは率直に言って無意味であるあまりにも多くの省略表現もあります
  • Haskellはしばしば数学に非常によく似ていますが、すぐに構文スープに変質する可能性があります
  • Python ...実際には、Pythonは初心者にとって深刻な異議を見つけることができない唯一の言語です。たぶんそれが私が学んだ最後の言語だからであり、次の言語は私のやり方の誤りを教えてくれるでしょう。

C#やVB.Netについて何も書いていないことに気付きました。
HK1

4

使用していない言語が「間違っている」ことをクラスメートに尋ねます。さまざまな言語を使用することで、自分の好みを理解することができます。

私のクラスメートの多くは、二度と使用する必要のない言語を習得しなければならないという考えに口を閉ざしましたが、あまり人気のない言語を学ぶことへの恐怖のどこから来るのかはよくわかりません。

彼らを知らずに、なぜ彼らがこのように感じるのかを確信をもって言うことはできません。たぶん彼らは怠け者だ。たぶん彼らは以前にその言語を使用したことがあり、それが気に入らなかったのかもしれません。おそらく、彼らは別の言語を試すことを恐れています。知るか。私が知っていることは、CSの学生であり、研究者であり、業界で働いており、さまざまな言語を知っていることは大きな財産であり、何を使うかわからないということです。例:私は最初の学習Cだったとき、私の先生のようなシェルスクリプトやコマンドラインユーティリティに私たちを紹介grepしてawk。私の友人は、これらの能力を習得することを気にしませんでした。今では毎日仕事で使っています。

私は今学期に検索エンジンクラスを受講しています。これはPerlで行われ、再びクラスメートが言語の選択について不平を言っているのを見ています。

Perlは非常に強力であり、使用方法を知っていれば、Perlはあなたの人生をずっと楽にします。Pythonにも似ており、PythonはCS学生のトップリクルーターであるGoogleで頻繁に使用されています。あなたのクラスメートはこれを食べているはずです。FWIW、私はperlとpythonを中級レベル(初心者ではなく専門家ではない)で知っています。

好きな言語を持っていることや他の言語を嫌うことは理解できますが、そもそもそれを習得するのに苦労する人がいるのはなぜですか?

若くて無駄?私もそうでした。しかし、私の「うるささ」は数学の領域にありました。だから、その経験から、彼らは新しいことを学ぶのを楽しんでいないので、それについて精力的に働いているか、新しい言語は彼らにとって学ぶのが難しいと思います。(しかし、知っておく価値のあるものは、単にあなたの膝に落ちるわけではありません)

「間違った」言語を本当に学べますか?SchemeやHaskellなどの良いメンタルエクササイズを他に何も学んでいないのに、少なくとも問題を解決するさまざまな方法に触れるのに役立つのではないでしょうか。

最初の文まで:いいえ、しかし、あなたは+咳+ Lisp +咳+ =)を望まない言語を間違いなく学ぶことができます

残り:はい!好きな言語を見つけて視野を広げるために、できるだけ多くの言語を学ぶ必要があります。それらすべてを習得する必要はありませんが、実用的な知識を持っていると常に役立ちます。学習するのに時間の無駄だと思った言語がいつ役立つかわかりませ


1
Lispの何が問題なのですか?!?!:)
マイケルK

1
「できるだけ多くの言語を学習する」ための+1。さまざまな言語を知っている場合、特定のタスクに対応する言語を選択するのは簡単です。
マイケルK

1
@Michael:さらに、ほとんどの概念をすでに知っているので、新しいものを習得しやすくなります。
デビッド

@Michael:Lisp =)に問題はありません。私は関数型プログラミング言語の男ではありません。さらに、非常に多くの括弧!! しかし、Lispで実装された非常にエレガントなソリューションを見てきました。SchemeとLispの達人を大いに尊敬しています。
アクア

3

プログラマーを雇うことは非常にarbitrary意的で気まぐれなプロセスであるため、単純な事実は、間違ったテクノロジーを選択した場合、ドードーの道を進んでいることに気付くかもしれないということです。

いつでもフロントページで、次のような信念に近い宗教的な熱意が表示されます。

  1. 優秀なプログラマーになるには、コンピューターサイエンスの学位が必要です。
  2. コンピュータサイエンスの修士号を取得すると、プログラマーは悪くなります。
  3. 認定資格は、あなたのキャリアを前進させるために絶対に必要です。
  4. 認定は、悪いプログラマーを示す赤い旗です。
  5. コンピューターサイエンス以外の分野の大学の学位は、最高のプログラマーになる傾向があります。
  6. 夕方と週末にもプログラミングしない限り、あなたは優れたプログラマーではありません。
  7. そしてその上に行く。

そこにある1つの定数は、そこにいる企業の99%がYテクノロジーでX年の経験を持ちたいと思っているということです。


2

私は学ぶために、「間違った」言語を選択する際の恐怖が主な原因だと思う情報の不足指導の欠如など、:

  • 銀の弾丸の誤Fall。仕事、環境、プロジェクトに適切な言語があるという誤解。そして、間違ったものを選ぶと、あなたは乾杯します。
  • プログラミングが言語を超越していることを理解していない。言語は、タイプライターやコンピューターからライターへの単なるツールです。ツールのニュアンスを学習すること(構文)ではなく、ツールで作成できるもの(概念、抽象化など)です。

たとえば、Schemeが非常に優れた教育言語である理由です。プログラミングとは、抽象化と再利用の2つのことです。Schemeには、機能の抽象化と機能の呼び出し(再利用)という2つの機能があります。ちなみに、構文さえありません!
ヨルグWミッターグ

2

より多くの意見にさらされています。

過去に物事がどのように行われたのかと比較すると、私たちはより多くの意見にさらされているため、どのように時間を費やしているのかについての第二の推測があります-誰もが最初のプログラミング言語がどうあるべきか、そしてそのような気難しい主題、誰でも何でも正当化できます。

私たちの動きの速いライフスタイルのために、誰もが時間を浪費するという生来の恐怖を持っています。間違った言語を習得することの強調された恐怖は、単に人々が多数の意見に簡単にさらされる結果です。


1

疑わしい有用性を持つ何かを学ぶことの一般的な嫌悪。これは人々が受けたいと思っているクラスであり、彼らはまだ彼らが役に立たないと思う何かを学んでいるので、私はここの刺し傷がさらに悪化しているのを見ることができます。コラージュをしようと思ったら、現実世界で使えるものを学びたいと思っています。

私が他の人々と意見を異にすることができる唯一の部分は、ある言語が頻繁に使用されており、彼らがそれを学習するためにバブルの外に出たくない場合です。そのときだけ、不平を言うのは意味がありません。


1

なぜ「恐怖」なのか。私はそれをあなたが望まないか、それが重要であると感じない何かを強制的に与えられたという敵意と呼ぶでしょう。言語に誤りはありませんが、物事に集中する時間は限られています。私はCSクラスをJavaでやらなければならなかったので、満足していませんでした。Javaが間違った言語であると恐れたからではなく、それが私のキャリアの焦点では​​ありませんでした。

今、Javaは便利ですよね?LOL誰もがJavaを学びます。それはあなたが競争したくないものです。履歴書は、「Javaを知っているCS卒業生」という見出しの1000のスタックになります。実際、おそらく雇用適性に関する学習スキーマの方が優れていると思います。それは、あなたがちょっとしたコミュニティカレッジではなく、エリート大学に行ったという秘密の印だからです。

また、この種の敵意は一般的にCSよりもはるかに広いと言えますが、一般的に高等教育を示しています。インストラクターがPerlを選んだのは、Perlを知っていて、簡単に採点でき、学生が学ぶより新しい言語を学ぶことを恐れているからです。私はあなた自身の教育であり、あなたはあなたがあなた自身の成功に必要であると感じる技術を計画することができるべきだと思います。

(PS MITはスキーマを放棄し、Pythonに切り替えました)


Schemeをあきらめるのはちょっと悲しいですが、SICPはすべてのプログラマーが読むべきものです。私はあらゆる機会にそれを促進する傾向があります。
ザカリーK

これは大学時代を思い出させます。私が始めてから数年後、CS部門はC ++からJavaを主要な教育言語に切り替えました。数年後(データ構造のチュートリアルを教えようとしていたとき)、どのユーザーもメモリ割り当てについて何も理解していないことが明らかになりました(たとえば、スタック対ヒープで完全に失われました)。その結果、彼らは私たちが彼らに教えようとしたデータ構造の基本的な操作を理解しませんでした。その後まもなく、C ++が再び好まれた言語になりました。
スミスコ

実際には、プログラミングを理解すれば新しい言語を学ぶのは簡単です。人々はCのような言語を推奨します。なぜなら、ポインタを宣言し、メモリを割り当て、ポインタへの書き込みアクセスを保護する必要があるからです...これらのことを考えると、これらすべてをすでに考慮しているため、他のすべては非常に簡単です。より抽象的な言語から始めて、発生しているすべての潜在的な事柄を理解するためのエクスペリエンスを構築する、逆を行うのは困難です。
dcgregorya

1

現実の世界に出れば、時間はすべての中で最も珍しい商品です。そして、誰も本当の利益をもたらさないスキルに時間を無駄にしたいという人はいません。

そうは言っても、学ぶべき「間違った」言語があるとは思いませんが、PHPで高度なことをするのに苦労する代わりに、何年も前にRubyを発見したかったのですが...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.