Bjarne Straustrupの蚘事「新しい゜フトりェア開発者に䜕を教えるべきですか なぜ」

Communications of the ACMの1月号には、コンピュヌタサむ゚ンスの教育における問題に関するStraustrupおじさんによる短い蚘事が掲茉されおいたす。 この蚘事は確かずはほど遠いものであり、確かにアメリカ瀟䌚に匷く向けられおいたすが、私たちにずっおも興味深いものです。 翻蚳倚少文孊ですが、オリゞナルに近い私はあなたの泚意ず議論、それを改善したい人にもたらしたす- ここにようこそ







若いプログラマヌに教えるために必芁なものずその理由。



業界がより良く生きるためには、コンピュヌタヌサむ゚ンスの教育における根本的な倉化が必芁です。



コンピュヌタサむ゚ンスは゜フトりェアシステムの開発の䞭心になければなりたせん。そうでなければ、個々の経隓ず経隓則に頌っお、蚱容できないほど高い開発ずメンテナンスのコストで生産性ず信頌性の䜎いシステムを手に入れる必芁がありたす。



問題は䜕ですか。


倚くの堎所で、業界が必芁ずするものず倧孊のプログラマヌが教えるものずの間にギャップがありたす。 以䞋に䟋を瀺したす。



有名なコンピュヌタヌサむ゚ンスの教授、誇らしげに、 「私たちはプログラミングを教えるのではなく、コンピュヌタヌサむ゚ンスを教える」。



産業マネヌゞャヌ 「圌らは最も基本的なものをプログラムできたせん」



倚くの堎合、䞡方ずも正しいものであり、䞀芋しただけではありたせん。 平均的なプログラマヌを卒業するこずは倧孊の問題ではありたせんが、業界には「広い芖野を持ったハむレベルな思想家」ず「科孊者」だけが必芁ではありたせん。



コンピュヌタサむ゚ンスのもう1人の教授 「私はプログラミングをしたせん。」



別のマネヌゞャヌ 「コンピュヌタヌサむ゚ンス孊科の卒業生は採甚しおいたせん。 この孊科の物理孊の卒業生を教えるよりも、物理孊者にプログラミングの方法を教える方が簡単です。」



どちらもいく぀かの点で正しいですが、理想的な䞖界では䞡方ずも根本的に間違っおいたす。 教授は間違っおいたす、なぜならあなたが緎習しおいないこずを教えるこずは䞍可胜でありそしお倚くの堎合、緎習したこずがない、したがっおあなたは理解しおいないが、マネヌゞャヌは゜フトりェア品質の芁件が非垞に䜎く、物理孊者やコンピュヌタヌサむ゚ンスの蚓緎を受けおいない他の人々がそれらに察凊したす。 もちろん、コンピュヌタヌサむ゚ンスに倚くの゚ネルギヌを費やしおいる物理孊者を意味するわけではありたせん。このような䞀連の資質は私にずっお理想的です。



情報孊教授孊生に぀いお 「圌は産業で仕事を埗た。」



コンピュヌタヌサむ゚ンスのもう1人の教授 「圌は倧きな玄束を瀺したので、残念です。」



この矛盟は倚くの問題の栞心であり、それらを修正する詊みを耇雑にしたす。



業界では、少なくずも自分のキャリアの初めに、コンピュヌタヌサむ゚ンス郚門の卒業生がプログラムを䜜成するこずを望んでいたす。 倚くの堎合、高い信頌性芁件を備えた分散システムたたは組み蟌みシステムの長幎確立されおいる゜ヌスず連携する必芁がありたす。 しかし、倚くの卒業生は、䞀郚のアマチュア゚ンタヌテむメントを陀いお、実質的に知識や゜フトりェア開発スキルを持っおいたせん。 特に、倚くの人はプログラミングを最小限の劎力で宿題ず芋なし、䜓系的なテスト、サポヌト、ドキュメント、他のプログラマヌによる蚘述コヌドの䜿甚など、より深いこずを考えるこずはめったにありたせん。 倚くの人は、ある講矩で孊んだこずを別の講矩で孊んだこずず組み合わせるこずができず、アルゎリズム、デヌタ構造、および゜フトりェア゚ンゞニアリングの成瞟が良い孊生をよく芋かけたすが、これらは運甚クラスですシステムは、すべお同じアルゎリズム、デヌタ構造、およびコヌドを完党に無芖しお迅速にコヌディングされたす。 その結果、私たちは抑制的で手入れの行き届いおいないを手に入れたした。



倚くの人にずっお、「プログラミング」は、原則のないハッキングず倖囜のラむブラリヌの䜿甚の奇劙な組み合わせになっおいたす実際に䜕が起こるかに぀いおは非垞にあいたいな考えです。 原則ずしお、「サポヌト」ず「コヌド品質」の抂念は忘れられおいるか、たったく理解されおいたせん。 業界では、「システム」を理解し、「゜フトりェアを蚭蚈できる」卒業生を芋぀けるのが難しいずいう苊情は、すでによく知られおおり、珟実を反映しおいたす。



しかし、最近、私のコンピュヌタヌは䜕もクラッシュしおいたせん。


゜フトりェアに぀いお䞍平を蚀うのはかなり流行しおいたすが、過去10幎間で倚くのプログラムが改善されおきたした。 残念ながら、人的資源ず機械資源の改善には莫倧な費甚がかかりたす。 䞀般に、プログラムの実行ず倧量テスト䞭に無限のチェック局を远加するこずにより、信頌性の䜎い郚品から比范的信頌性の高いシステムを構築する方法を孊びたした。 コヌド自䜓の構造は時々倉曎されたすが、必ずしも良いずは限りたせん。 倚くの堎合、倚局゜フトりェアず耇雑な䟝存関係により、プログラマヌは、たずえ額に7぀のスパンがあるずしおも、システムを完党に理解できなくなりたす。 システムの重芁な偎面を理解できず、枬定するこずさえできないため、これは私たちにずっお良い兆候ではありたせん。



もちろん、肥倧化した、あたり理解されおいないシステムを構築したいずいう芁望に抵抗した゚ンゞニアがいたす。 私たちのコンピュヌタヌ化された飛行機がnot萜しないずき、電話が働くずき、そしおメヌルが時間通りに到着するずき、圌らは感謝するべきです。 ゜フトりェア開発を成熟した信頌性の高い䞀連の原則、ツヌル、技術に倉える努力に感謝したす。 残念ながら、圌らの少数掟ず肥倧化した゜フトりェアは、倚くの人々の感情ず思考を支配しおいたす。



同様に、理論ず産業実践のギャップに苊劎しおいる教垫もいたす。 たた、サポヌトず感謝に倀したす。 実際、私が知っおいるすべおの教育機関は実践的な知識を教えるよう努めおおり、個々のプログラムのいく぀かを促進するこずに自分の人生を捧げおいる教授がいたす。 ただし、倧きな画像はたったく印象的ではありたせん。 いく぀かのプロゞェクトやむンタヌンシップは良いスタヌトですが、バランスの取れたカリキュラムぞの本栌的なアプロヌチに代わるものではありたせん。 「゜フトりェア゚ンゞニアリング」たたは「情報技術」ずいうラベルの「情報孊」の遞奜は、遠近法の違いを瀺しおいる可胜性がありたすが、問題は、颚景が倉わった埌でも新しい装いに珟れる非垞に悪い性質を持っおいたす。



「産業」ず「科孊的コミュニティ」の私のむメヌゞは䌌顔絵に近いですが、少なくずも少しの経隓がある人なら誰でも珟実の䞀郚を反映しおいるず確信しおいたす。 私の認識は、産業研究者およびマネヌゞャヌATTベル研究所で24幎、うち7名が孊郚長であり、過去6幎間を倧孊工孊郚コンピュヌタサむ゚ンス孊郚で過ごしたずいう認識です。 私はよく旅行したすが、毎幎アメリカを䞭心に数十瀟の技術者や管理者ず真剣に話し合いたす。 倧孊が生産するものず生産に必芁なものずの䞍䞀臎は、コンピュヌタヌサむ゚ンスずコンピュヌティング業界の䞡方の実行可胜性に察する脅嚁であるず思いたす。



理論ず実践のギャップ


どうする 業界は、最新のツヌルずテクノロゞヌで完党に蚓緎された「開発者」を採甚するこずを望みたすが、科孊の最倧の野望は、最高の科孊者を倧量に生産するこずです。 私たちが進歩するためには、これらの理想をより良く調敎する必芁がありたす。 産業界に入孊する卒業生は、゜フトりェア開発に぀いお十分に理解する必芁があり、産業界は、新しいアむデア、ツヌル、および手法を吞収するための非垞に優れたメカニズムを開発する必芁がありたす。 優れた開発者を半孊歎のあるコヌダヌによる被害から保護するように適応した文化に組み蟌むこずは意味がありたせん。新しい開発者が本質的に新しく、より良いこずをするのは難しいからです。



スケヌリングの問題を指摘したしょう。 倚くの産業システムは数癟䞇行のコヌドで構成されおいたすが、孊生は千行を超えるプログラムを曞くこずなくコンピュヌタヌサむ゚ンスの卒業蚌曞を取埗できたす。 すべおの倧芏暡な産業プロゞェクトには倚くの人々が関䞎したすが、倚くのコンピュヌタヌサむ゚ンストレヌニングプログラムは個人の仕事を重芖し、本質的にグルヌプ䜜業を劚げたす。 これを念頭に眮いお、倚くの組織は、開発者のスキルぞの䟝存を最小限に抑えるために、ツヌル、テクノロゞヌ、蚀語、および操䜜手順を簡玠化しおいたす。 これは、人間の才胜ず仕事を無駄にするだけです。なぜなら、すべおの人ずすべおの人を最小公分母にたで枛らすからです。



業界は、実瞟のあるツヌルずテクノロゞヌに䟝存したいず考えおいたすが、同時に、銀の匟䞞、魔法の泡、キラヌアプリケヌションなどの倢に陥りがちです。 圌女は、「建築家」が率いる最䜎限の資栌で、コヌド品質などの些现なこずを凊理するには真面目すぎお、亀換可胜なコヌダヌず連携できるようにしたいず考えおいたす。 これにより、基本的なツヌルプログラミング蚀語やオペレヌティングシステムなどの遞択が過床に保守的になり、単䞀文化トレヌニングず展開のコストを最小限に抑えるために぀ながりたす。 これにより、盞互に互換性のない独自の巚倧なむンフラストラクチャが出珟したす。 プラットフォヌムベンダヌは、メむンツヌルの共通性にもかかわらず、開発者がアプリケヌションを䜜成できるように、基本ツヌルを超えた䜕かが必​​芁です。 むンセンティブシステムは、壮倧な䌁業スキヌムず短期的な成果に報いるものです。 その結果、コストず倱敗した新しいプロゞェクトの数の䞡方が驚異的です。



産業の珟実やその他の障害に盎面しお、科孊はそれ自䜓に戻り、できる限りのこずを行いたす。同様の人々の小さなグルヌプが孀立しお働くこずができる珟象を慎重に研究し、匷固な理論的基盀を構築し、球銬の完璧な蚭蚈ず技術を蚭蚈したす真空䞭で。 このモデルは、叀颚なスタむルで曞かれた倧量の゜ヌスコヌドを操䜜するための独自のツヌルには適合したせん。 産業ず同様に、科孊は適切なむンセンティブスキヌムを発明したす。 これはすべお、明確に定矩された科孊科目の飛行コヌスの継続的な改善に完党に適合しおいたす。 したがっお、科孊の進歩は、䞞穎の正方圢のギャグのような産業のニヌズに適しおおり、専門のむンフラストラクチャのコストだけでなく、トレヌニングのコストも負担する必芁がありたす。



業界がプログラマヌにたずもな賃金を支払えば問題ないだろうず考える人は垞にいるでしょう。 これは理にかなっおいるかもしれたせんが、業界には実際により良い開発者が必芁なため、同じ䜜業に倚額の費甚を支払うだけではあたり圹に立ちたせん。 䜎スキルで亀換可胜な劎働者がサヌビスを提䟛するパむプラむンのような゜フトりェアを開発するずいう考え方は、根本的に欠陥があり、䞍適切です。 圌女は最も有胜な人々をこの領域から远い出し、孊生がそのような科孊を研究するこずを決しお奚励したせん。 この悪埪環を断ち切るために、適切なスキルを持぀卒業生が倧孊を去るべきであり、産業界はこれらのスキルを䜿甚できるツヌル、テクニック、プロセスを採甚すべきです。



プロフェッショナリズムの倢。


「コンピュヌタヌサむ゚ンス」 コンピュヌタヌサむ゚ンス、このテキストではただ 「コンピュヌタヌサむ゚ンス」ず蚳されおいたす-私のメモ は、ひどく誀解を招く甚語です。 基本的に、それはコンピュヌタヌに関するものではなく、基本的には科孊ではありたせん。 むしろ、コンピュヌタヌの䜿甚、およびコンピュヌティング「アルゎリズムずコンピュヌタヌの考え方」を含む䜜業ず思考の方法に぀いお話しおいる。 倚くの堎合コンピュヌタヌを䜿甚しお、科孊、数孊、工孊の特定の偎面を組み合わせたす。 それに関䞎するほずんどすべおの人々にずっお、コンピュヌタヌサむ゚ンスは応甚分野です。 玔粋なコンピュヌタヌサむ゚ンスは、応甚甚途を陀いお、通垞䞍毛です。



アプリケヌションを構築する2人の人の違いは䜕ですか。1人はコンピュヌタサむ゚ンスを知っおおり、2人目は医孊や物理孊など他の分野の専門家です。 最初のものは、コンピュヌタサむ゚ンスの「コア」である基本的な基瀎に堪胜でなければなりたせん。 䜕が含たれたすか コンピュヌタヌサむ゚ンスの確立されたコヌスのほずんどは、アルゎリズム、デヌタ構造、マシンアヌキテクチャ、プログラミングの原則、数孊䞻に論理的および数倀的思考およびコンピュヌタヌシステムオペレヌティングシステム、たたはDBMSなどです。 この知識をすべお収集し、倧きなタスクを凊理する方法を理解するには、各孊生が耇数のグルヌププロゞェクトに参加する必芁がありたす基本的な゜フトりェア゚ンゞニアリングず呌ぶこずができたす。 本質的なこずは、理論ず実践の間にバランスがなければならないずいうこずです。 コンピュヌタサむ゚ンスは原則ず定理だけでなく、愚かなコヌディングだけではありたせん。



このコアは明らかに、䞀般的なコンピュヌティングサむ゚ンスよりもはるかにコンピュヌタヌ指向です。 したがっお、専門分野グラフィック、ネットワヌク、゜フトりェアアヌキテクチャ、ヒュヌマンマシンむンタラクション、セキュリティなどを远加しない限り、誰も情報科孊者ず呌ぶこずはできたせん。 しかし、これでは十分ではありたせん。 実践的な情報孊は本質的に適甚され、孊際的であるため、コンピュヌタヌサむ゚ンスのすべおの専門家は、他の分野たずえば、物理孊、医療工孊、歎史、䌚蚈、フランス文孊などで䞭栞以倖の教育を受ける必芁がありたす。



経隓豊富な教垫は「しかし、これは䞍可胜です これを4幎間で孊習できるのはどの孊生ですか」 圌らは正しい。䜕かを犠牲にしなければならない。 私は修士号を最初にするこずを提案し、コンピュヌタヌ科孊者の圹割を実践する暩利を䞎えたす。さらに、最終的な1幎たたは2幎の孊士号ではなく、実際の修士号を授䞎したす。 さらなる研究を蚈画しおいる人は、い぀ものように、候補者の孊䜍を取埗しようずしたす。



倚くの教授は「プログラムする時間がありたせん」ず反察したす。しかし、プロの開発者になりたい孊生を教える教授はプログラミングの時間を芋぀け、機関はそのような教授に報いる手段を芋぀けるべきだず思いたす。 コンピュヌタヌサむ゚ンスの䞻な目暙は、最高のシステムの䜜成を支揎するこずです。 それで、長幎にわたっお䞀人の患者を芋たこずのない人に手術の指導を任せたすか キヌボヌドに觊れたこずのないピアノ教垫をどう思いたすか 孊生がコンピュヌタヌサむ゚ンスを孊ぶこずは、必芁な本を読むだけでなく、システム党䜓でのアプリケヌションの改善ずコヌドの矎孊の感芚を高める方向に進む必芁がありたす。



私はプロずいう蚀葉を䜿いたす。 それには倚くの意味ず意味がありたす。 医孊や工孊などの業界では、ラむセンスが必芁です。 ラむセンスは非垞に埮劙で感情的なトピックです。 しかし、私たちの文明は゜フトりェアに䟝存しおいたす。 誰もが自分の趣味ず䌁業ポリシヌに基づいおのみコヌドの重芁な郚分を倉曎できるのは劥圓ですか たずえそうだずしおも、50幎経った今でも合理的でしょうか 䜕癟䞇人もの人々が䟝存しおいる゜フトりェアに保蚌がないこずは合理的ですか 実際、問題は、ラむセンスによっお確認されたプロフェッショナリズムが、䞀般的に利甚可胜な知識、ツヌル、およびテクノロゞヌの倧量の存圚に䟝存しおいるこずです。 免蚱を持぀技術者は、䞀般に受け入れられおいる材料ず技術を䜿甚しお建物が建蚭されたこずを確認できたす。 コンピュヌタサむ゚ンスで䞀般に認められおいるコンピテンシヌスキヌムがない堎合に、゜フトりェアで同じこずを行う方法はわかりたせん。 今日、私は、認可された詊隓たたは、より珟実的には、医療委員䌚のようなさたざたな専門分野の詊隓のセットを開発するために、人々のグルヌプを遞択する方法すら知りたせん。



業界はギャップを埋めるために䜕ができたすか 科孊に぀いお語るよりも、「産業」ず「産業のニヌズ」を特城付けるこずははるかに困難です。 最終的に、科孊機関は目暙を達成するためのかなり暙準的な構造ずアプロヌチを持っおいたす。 工業䌁業ははるかに倚様です。倧小さたざた、商業的ではなく、システムの構築などに高床なアプロヌチを䜿甚しおいたす。 したがっお、私は薬を凊方し始めるこずさえできたせん。 ただし、科孊ず業界のギャップに盎接関係する1぀の芋解がありたす。コンピュヌティングに倧きく䟝存しおいる倚くの組織は、技術的に危険なレベルたで䜎䞋しおいたす。



産業マネヌゞャヌ 「生き残りたいなら、あなたの技術的胜力を誰にも芋せないでください」



組織は、新しい才胜の怜玢ず開発のための䌁業の蚘憶ずむンフラストラクチャなしでは成功し続けるこずはできたせん。 ゜フトりェア開発に興味のある科孊者ずのより緊密な協力は、双方にずっお生産的です。 共同研究ず、単玔なトレヌニングコヌスを超えた長期トレヌニングぞの重点がこれに倧きな圹割を果たすこずができたす。



おわりに


もっず良くしなければなりたせん。 これを行うたで、むンフラストラクチャはリ゜ヌスをきしみ、膚匵させ、吞収し、い぀かは最も予枬䞍可胜で砎壊的な方法で砎壊されたすむンタヌネットルヌティング、オンラむンバンキング、電子投祚、電力グリッド管理に぀いお考えおください。 特に、科孊ず産業のギャップを埋め、双方を倉えなければなりたせん。 ゜フトりェア補品ず、少なくずもそれらを生産するコンピュヌタヌサむ゚ンスの専門家のラむセンスを目指しお、専門分野ず応甚分野を持぀コアに基づくコンピュヌタヌ教育構造を確立するこずを提案したす。 これは、科孊および業界の技術専門家による長期的なサポヌトず密接に関連しおいたす。



All Articles