22
コーディングTIPS+ Yusuke Ito, Mizuno lab. 基礎編 今年ゼミで使ったネタより

CodingTips+ 基礎編

Embed Size (px)

Citation preview

Page 1: CodingTips+ 基礎編

コーディングTIPS+Yusuke Ito, Mizuno lab.

基礎編

今年ゼミで使ったネタより

Page 2: CodingTips+ 基礎編

何を話すか

• プログラマが知っておくと良いこと

• 完全に個人的な見解

• 自分がアプリケーション開発者・組み込み開発者、という前提

Page 3: CodingTips+ 基礎編

注意

• 良くもも悪くもここで教わったことは含みません

• 異論は受け付けません

• 質問はどうぞ

Page 4: CodingTips+ 基礎編

プログラミングとは

Page 5: CodingTips+ 基礎編

目的なのか手段なのか• 今まで自分がやってきたプログラミングはどうか? もらった課題はどうか?

→ 考えよう

• プログラミングは手段

• 好きか嫌いかと言われれば嫌い

• できることならやりたくない

Page 6: CodingTips+ 基礎編

レベル・勉強

• ここの5年間の専門科目<<<<独学で勉強する1年

• 学校での内容は勉強する、知るきっかけにはなる

Page 7: CodingTips+ 基礎編

“現代 GUI プログラマのレベル分け”

• レベル1(入門者レベル)- 5点

• レベル2(初級者レベル)- 4点

• レベル3(中級者レベル)- 3点

• レベル4(上級者レベル)- 2点

• レベル5(専門家レベル)- 1点計10点満点で評価

http://bit.ly/cU2sE5

Page 8: CodingTips+ 基礎編

C言語って必要?

• モダンで一般的なアプリケーションは主としてCは使わない

• 使うところ: カーネル・デバイスドライバ・組み込みシステム・特殊システム局所的な最適化

• 大学はどうか? RubyやJSが多い?

Page 9: CodingTips+ 基礎編

本題

Page 10: CodingTips+ 基礎編

開発環境• 統合開発環境(IDE)は絶対に使うべき

• なんとかPad+gccコマンドは X

• コード補完・ビルド・ファイル管理

Page 11: CodingTips+ 基礎編

• 基本はプラットフォーム標準を使う

• Windows: VS, Eclipse+GCC

• Mac: XCode (LLVMGCC)

• Linux: Eclipse? (+GCC)

Page 12: CodingTips+ 基礎編

ソースコード管理• SubversionやGitを使う

• 一人でも使うこと

• サーバーは自分のコンピュータに

• GUIや開発環境から使う

• コマンドを直接叩くのは非効率

Page 13: CodingTips+ 基礎編

ライブラリ

• オープンソースのライブラリを使う

• やりたいこと(研究や課題)の90%(数値適当)は、すでにオープンソースのライブラリやプログラムがある。

Page 14: CodingTips+ 基礎編

おすすめライブラリC編• glib -リスト・ハッシュ・可変長文字列/配列・N分木・オブジェクトシステム・タイマー・文字列操作・スレッド

• OpenCV - 画像の透過的な読み書き・変形・フィルタ・画像認識

• sndfile - オーディオファイルの透過的な読み書き

• fftw - 高速なFFT

• SDL - ゲームやメディア関係のアプリを作るときに有用なライブラリ

他言語(C#, Java, Ruby…)にはもっとライブラリがあるはず。

Page 15: CodingTips+ 基礎編

検索・情報収集• 軽く検索→人に聞く→もう一度検索→しばらく寝かせて検索

• 検索能力によって損得が大きく変わる

• Webページは英語がほとんど英語のページを見ることを厭わないこと

• 読めない言語は英語に機械翻訳する→英語でも読めればマシ→大きなアドバンテージ。

Page 16: CodingTips+ 基礎編

ソースコードを読む• 綺麗なソース

• 汚いソース

• 友達のソース

• 先生のソース

• 自分のソース、自分の過去のソース

Page 17: CodingTips+ 基礎編

コピペ指向プログラミング

• 手段のプログラミングの時に有効

• ミスタイプやバグを防ぐ、時間短縮

• 同じコピペが多数の場合→関数化できないか、アルゴリズム変更ができないか検討するべき

Page 18: CodingTips+ 基礎編

シェルとUNIX

• シェル操作を身につける

• UNIX系OSを使うのがいいが...

• パイプ・リダイレクト・シェルスクリプト

• UNIXの回で詳しく

• とりあえず、効率化

Page 19: CodingTips+ 基礎編

Conclusion

• かしこいやり方で効率化

• 使えるものは使う(ライブラリ、人)

Page 20: CodingTips+ 基礎編

ENDつづく...

Page 21: CodingTips+ 基礎編
Page 22: CodingTips+ 基礎編