Upload
yusuke-ito
View
573
Download
1
Embed Size (px)
Citation preview
コーディングTIPS+Yusuke Ito, Mizuno lab.
基礎編
今年ゼミで使ったネタより
何を話すか
• プログラマが知っておくと良いこと
• 完全に個人的な見解
• 自分がアプリケーション開発者・組み込み開発者、という前提
注意
• 良くもも悪くもここで教わったことは含みません
• 異論は受け付けません
• 質問はどうぞ
プログラミングとは
目的なのか手段なのか• 今まで自分がやってきたプログラミングはどうか? もらった課題はどうか?
→ 考えよう
• プログラミングは手段
• 好きか嫌いかと言われれば嫌い
• できることならやりたくない
レベル・勉強
• ここの5年間の専門科目<<<<独学で勉強する1年
• 学校での内容は勉強する、知るきっかけにはなる
“現代 GUI プログラマのレベル分け”
• レベル1(入門者レベル)- 5点
• レベル2(初級者レベル)- 4点
• レベル3(中級者レベル)- 3点
• レベル4(上級者レベル)- 2点
• レベル5(専門家レベル)- 1点計10点満点で評価
http://bit.ly/cU2sE5
C言語って必要?
• モダンで一般的なアプリケーションは主としてCは使わない
• 使うところ: カーネル・デバイスドライバ・組み込みシステム・特殊システム局所的な最適化
• 大学はどうか? RubyやJSが多い?
本題
開発環境• 統合開発環境(IDE)は絶対に使うべき
• なんとかPad+gccコマンドは X
• コード補完・ビルド・ファイル管理
• 基本はプラットフォーム標準を使う
• Windows: VS, Eclipse+GCC
• Mac: XCode (LLVMGCC)
• Linux: Eclipse? (+GCC)
ソースコード管理• SubversionやGitを使う
• 一人でも使うこと
• サーバーは自分のコンピュータに
• GUIや開発環境から使う
• コマンドを直接叩くのは非効率
ライブラリ
• オープンソースのライブラリを使う
• やりたいこと(研究や課題)の90%(数値適当)は、すでにオープンソースのライブラリやプログラムがある。
おすすめライブラリC編• glib -リスト・ハッシュ・可変長文字列/配列・N分木・オブジェクトシステム・タイマー・文字列操作・スレッド
• OpenCV - 画像の透過的な読み書き・変形・フィルタ・画像認識
• sndfile - オーディオファイルの透過的な読み書き
• fftw - 高速なFFT
• SDL - ゲームやメディア関係のアプリを作るときに有用なライブラリ
他言語(C#, Java, Ruby…)にはもっとライブラリがあるはず。
検索・情報収集• 軽く検索→人に聞く→もう一度検索→しばらく寝かせて検索
• 検索能力によって損得が大きく変わる
• Webページは英語がほとんど英語のページを見ることを厭わないこと
• 読めない言語は英語に機械翻訳する→英語でも読めればマシ→大きなアドバンテージ。
ソースコードを読む• 綺麗なソース
• 汚いソース
• 友達のソース
• 先生のソース
• 自分のソース、自分の過去のソース
コピペ指向プログラミング
• 手段のプログラミングの時に有効
• ミスタイプやバグを防ぐ、時間短縮
• 同じコピペが多数の場合→関数化できないか、アルゴリズム変更ができないか検討するべき
シェルとUNIX
• シェル操作を身につける
• UNIX系OSを使うのがいいが...
• パイプ・リダイレクト・シェルスクリプト
• UNIXの回で詳しく
• とりあえず、効率化
Conclusion
• かしこいやり方で効率化
• 使えるものは使う(ライブラリ、人)
ENDつづく...