わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

情報系学科の学生が在学中に学んでほしい14個のプログラミング技術(2/2)

昨日の続きです.項目を一つ増やしました.「[妄想]」のカテゴリを外しましたが,学科内でだれかと議論をしたわけではなく,相変わらずの放言ですit's still an unreserved talk

  • 科学技術計算: 適切なソフトウェアを選べば,微積分や行列の計算も,様々な統計処理も,コンピュータ上でやってくれます.ということで我々人間がすること,学ぶことは,立てた(計算ソフトウェアに投入する)式と,その結果が適切であることを,自分の目と頭で「検証」することです.
  • ハードウェアプログラミング: ソフトウェア(プログラミング)を理解していく標準的な流れでは,はじめ,ハードウェアとかCPUとかALUとかメモリとかを学ぶものの,そこからしばらく出てこなくなります.そして実験あたりとくっついて,「具体的なハードウェアを意識して,そこで動くプログラムを作る」ための技法を学ぶことになります.Cでも,概念として「計算機の制約」を学びますが,ハードウェアとの連携を通じて,その重要性をより深く理解してください.
  • データベース: データベースでもプログラミングをします.言語は,SQLです.非手続き型(宣言型)言語なので,その書き方に慣れてください.データベースを通じて学ぶこととして,SQLもありますが,そのほかに「設計」があります.いい設計をしておけば,SQLも素直に記述できます.設計がまずいと,SQLがうまく書けません.「将来のことを考えて今,最善の解を選ぶ」ためのスキルを身につけてください.
  • オブジェクト指向: これをどのように学ぶかというのはなかなか難しいのですが,個人的には,UMLを活用した「オブジェクト指向設計」,Javaに代表される「クラスベース言語」の2点が必須で,そして可能であれば,JavaScriptに代表される「プロトタイプベース言語」も学ぶことを勧めます.オブジェクト指向を学習するときは,それのみで理解するのではなく,技法を「日常見かける対象や課題に適用」できないか,考える癖をつけましょう.
  • スクリプト言語: 古い言い方でバッチファイルだとか,インタプリタ型言語だとかありますが,Linux (Unix)の世界では「スクリプト」です.シェルスクリプトがその基礎ですが,PerlRubyのように,Cと同等以上のことを,より簡潔なコードで書けるものも広く普及しています.卒業研究などのシステム開発に,これらスクリプト言語を使っていいかどうかは,研究室によりますが,自分専用の情報管理に使うのは問題ないはずで,うまく使えば快適になります.スクリプト言語を使う際に合わせて学びたいのは,自動化の技術,すなわち「今,手間をかけておくことで,後で楽をする」ことでしょう.
  • マークアップ言語: 論文を書くには,だんぜん,TeX *1です…と言えればいいのですが,研究室の学生の卒論・修論は1期生からWordでしたし,私自身も,Wordの比率が高くなっていまして,教育のためにTeXというのは廃れつつあります.それはさておき,TeXのほか,HTMLとXMLは,「マークアップ言語」というものに分類されます*2.それぞれの文法を学んでいると,「自分でルールを決める」とき,とりわけ「(ファイルの中の)表記法を決める」ときに,役立ちます.
  • サーバ管理: 自分の思うようにコンピュータを使いたい,演習室のハードやソフトでは物足りないという人は,自宅の自分のパソコンで,サーバを構築するのもいいでしょう.まずインストール作業が関門です.神の視点で見れば,1箇所を怠っていたために,インストールやり直しというのも,はじめのうちはしょっちゅうでしょう.動くようになったら次は,「セキュリティ」の問題に対処していきます.サーバを,インターネット上で公開するのは,高速道路で車を走らせるようなものです.他に迷惑をかけたり,かけられたりしないよう,細心の注意を払いましょう.学べば学ぶほど,周りに話したくなるような,ブログに書きたくなるような,面白い知識を得ていくのも,サーバ管理の醍醐味です.
  • 2人以上でプログラミング: 特別なプログラミング技術というのはないかわりに,人間くさい要素が入ります.「役割分担」,「協調性」,「プロジェクトマネジメント」などです.その種の本は,書店に行けば,コンピュータ書籍でも,ビジネス書にも置いているので,1冊くらい読み込んでみましょう.さて,人間くさい要素で,2人以上でモノを作ることの意義を,そして大学生活で学んでほしいことを,締めることにしましょう…「成功の喜びを,みんなで共有すること」.

*1:「てふ」とも「てっく」とも呼ばれます.「LaTeX2ε」は「らてっくつーいー」と呼ばれます.

*2:HTMLもXMLも,末尾の「ML」は「Markup Language」の略です.