Cプロ入門~CプロでボランティアTAをして出会ってきた諸々とそれへのツッコミ 10選

この記事はみす 52nd Advent Calendar 2017 - Adventar一日目の記事です。

 

風邪でアドベントカレンダーかけなくてつら。

某なんとか大学なんとか学部では一年生が必修でC言語をやらされます。そこで必然的に経験者は教える運命にあるのですが。そうでもしないと暇で死ぬので。最近はそうでもなくなってきたんですけどね。というわけでエラーやエラー未満の何か、それに対するコメントを言っていきたいと思います。

1. 初期化してない事案

int maxvolume; //初期化しないと更新もクソもないよね

char name[10]; //noname

2. bus error : 10

typedef struct {
  //ry
} Movie;

int cmpname(const void* p1, const void* p2){
  Movie s1 = *((Movie*)p1); //何で構造体の中にポインタを入れてんだよ!!
  //ry
}

3. n回宣言(n>1)

//in global
int A[10];

int hoge(){
  int A[10]; //hogeの中ではAはこいつになるよ!終わったら消えるよ!
  //ry
}

int main(){
  int A[10]; //globalなAよりmainの中ではこっちが優先されるんだよ!てかもう上書きされると思っていい。
}

ぼく「なんでこんなことしたの?」
* 「なんかエラーが出たから。」
ぼく「そうですか…」

int i;
for(int i=0;i<10;++i){ //これならiは初期化だけでいいんだよ!
  //
}

4. read fileできない

Q1. ディレクトリにdata.txt入れた?
A1. No. → 入れろや!!
Yes. → Q2へ。
Q2. ファイル名合ってる?
A2. No. → 正そうね。
Yes. → Q3へ。
Q3. そもそもコンパイルした?
A3. No. → しような。
Yes. → じゃあ書き方見直そうか。

5. なぜそんなところにセミコロンを入れた

for(int i=0;i<N;++i);{ //そんなことをしたらそれはただの文とスコープだ!
  //
}

6. 大文字小文字、単数形複数形

#define N 20
typedef struct {
  //ry
} Movie;

int main(){
  movie m; //エラー! 大文字と 小文字の区別も できないの!?
  Movie movies[N];
  for(int i=0;i<N;++i){
    printf("%s\n",movies.name); //エラー!複数形ですよ!配列の中身の型がMovieなんです。
  }
}

関連:#defineで宣言したら記号定数となるので、配列の要素数として指定できるけどintとかでやっちゃだめだよ!定数だからってconstつければいいとかいう話じゃない。

7. セグメントエラー

添え字を見直してください。 配列は要素数を十分に取りましょう。

8. 謎構文

while(1){
  if(l<r){
    //
  }
}

while(l<r)でいいやつ。 ゲームじゃないんだから。

if(a<b){
  if(a<c){
    //
  }
}

&&とか||とか論理演算子ってあったでしょ。

9. 用意しただけ

int binsearch(){
  //ry
}

int main(){
  //
}

そりゃmainの中で書かなかったら関数動かないでしょ!
今それあなたがやってること、数学の答案で「f(x)=なんとか とおく。」って書いただけだよ!使わなきゃ。

10. scanf printf

char c;
scanf("%c\n",&c); //うまくよみこめないね!ちゃんと&つけてるのにね!ところでその\nは何かな?
printf("%d", c); //そう!文字は内部では整数で管理されているんだよ!それを学ぶためにあえてやったんだよね!えらい!

以上です。お楽しみいただけたなら幸いです。
明日はmomokくんの記事です。楽しみ。

iOSDC2017参加記

何度でも最初の記事。

iOSDC2017にiOS開発を一度もやったことがないのに参加してきましたよっと。

iosdc.jp

 

ざっくり感想

結論から言うと、これはとても有意義なイベントでした。いつも通ってる大学でこんないいイベントをやってるなんて、ね。普通に楽しかったです。客観的に見ても、タダで参加できたため二日目昼夜三日目昼と一日分の食費が浮いたり、Tシャツ二枚にタオルにその他スポンサーの無料で配ってるもろもろもらえたり。もちろん本命のプレゼンもとても勉強になりました。きちんと全日参加した同大学の学生、僕の他に知らないんですよね。なんででしょう。もったいない。w

 

いちいち埋め込むと煩わしい感あるので(怠慢)、資料はまとめのリンクを張っておきます。(リンク張るってこの字なんですな)

iOSDC 2017 まとめ - Qiita

 

前夜祭 9/15 17:30~

映像史を受けていた教室が二倍に拡張され、早めに来たのでいい感じの席をとれました。記憶が薄いものでも一言ずつは感想を残していこうと思います。

SiriKit and Me

開発者のプレゼンってこんな風になるんだなあ、言えないとことか大変そうという感じ。SiriKitそんなに知らなかったので普通に勉強になった。

Objective-C++を使ってMRCで快適に開発する

この日はこれが一番楽しめました。なにせC++の話でしたから。コード例とかみると、二つの言語が混在しているようでコード規約とか作らないととてもカオスになりそうな印象でした。

MRC = Manual Reference Counting

ARC = Automatic Reference Counting

ふむふむ。

Swaggerで始めるAPI 定義管理とコードジェネレート

知らない単語をググりまくってました。

節子、それViewControllerやない...、FatViewControllerや...。

お話面白かったです。この後何度も聞くことになるViewControllerの最初のお話。

 

一日目 9/16 10:00~

なんか9:30前についてしまい無限に暇してた。OPでミサトさんの声が聞けて最高でした。

Auto Layoutのアルゴリズム

ただの線形代数。ちょっとお勉強したら深まりそう。隣の友達が「あ、これオンデマンドでやってやつだ!!」ってテンション上がってました。

両OSやるマンという選択

おもしろかったです。僕もiOSAndroid両方でアプリ作れるようになったらすごいなって思いました。

アプリエンジニアはどのように事業に貢献すべきか

geekではなかったものの、こういうマネジメント系な話個人的にとっても好きなので、ふむふむと思いながら聞けました。

Build high performance and maintainable UI library

最後のほう完全な僕の勉強不足と昼飯後の睡魔のせいでおいてかれましたが、前半は頭に入ってきました。UIのお勉強もしないといけないなと。

GoによるiOSアプリの開発

ベストオブこの日。すいてたし、話も初学者向け。Goの話。これもやってみたい言語のひとつ。

SwiftとKotlin

懇親会チケットを手に入れてから行ったらクソ混んでた。座り見。Kotlinやってみたい。

Xcode Source Editor Extensionの世界

先輩にノリでついて行って聞いてみたらめっちゃよかった。XCodeすら触ったことないのに。高い壁があるとのぼりたくなるのがiOSプログラマ

Convert Fxxking things to Swift

資料がなくて記憶も薄い…タイトルが変わったことはかろうじて覚えていた。

メルカリで実施した過去最大規模のABテスト「ドロワーvs下タブ」の舞台裏

難しかったです…

 

LTは三つ印象に残ったものを。

Swiftで音楽を奏でる

時報と音痴なスターウォーズ。音いじるの楽しそう。

多次元宇宙と画面遷移

次元は自由度。LT参加者大半に言えることだけど、お話がうまくて引き込まれる。

クラス名に個人の名前を含めるとこうなる

責任感を持てる。重要そう。

 

懇親会

楽しかったです。お話聞いてる間はただ食べる人になってました。僕より年下はおろか、同年代もいなかったです。唯一近いサークルの先輩は強い人で積極的に知識を人脈に生かしてました、強い。お話しできるネタもないうえ、どこに就職したいか、などの話をいきなり振られて、いろいろ考えないとなあと思った次第です。電脳会議の会社の人とふれあえたのはとてもよかったです。僕もいつか記事を書いてみたいですが、締め切りに追われるような人生は嫌ですねw

あとパックマンルールは神でした。

 

三日目 10:00~

一日がミサトさんの声から始まるの、最高です。今更ですが僕はミサト派です。

大学のカフェオレ自販機の存在をいまさら知った。半年通ってたのに。

新しい画像フォーマットHEIFを用いたiOSアプリの通信量削減

WebPという画像の種類を初めて知る。画像の勉強もしておきたいなあ。

結婚式を支えた技術 Firebaseを活用したサーバレスiOSアプリケーション開発

面白かったし、Firebaseの便利さが知れた。アド。

最近話題のあるサービスの番組表の実装を紐解く

無限スクロールの話は使えそうだと思った。

US版 Mercariをまるごと1から作り直した話

アーキテクチャで出てくるMVCやMVVMがわかるようになったの、小さな成長を感じた。

飛び道具ではないMetal

プレゼン面白かったです。MetalとSwiftの聴衆の温度差。

MVC→MVP→MVVM→Fluxの実装の違いを比較してみる

たぶん聞いてた中で一番難しくて、言葉知ってるようになったし少しでもわかればなーって思って聞いたら全く分からなくて何で自分はここにいるんだろう状態になった。

React Native vs iOSエンジニア

人がクソ多かった。スライドのソースコードが初めてまともに読めた。大きくて見やすい、理解できるよう時間も取ってゆっくり映してくれる。かなり勉強になった。

業務アプリの切札、Programable Kiosk Mode大全

クラッシュの例が豊富で面白かった。

Rangeと仲良くなる15分

かみ砕き方が絶妙にわかりやすくて、とてもよかった。

CoreMLでアイドル顔識別アプリを作ろう

サイリウムを振っていた。画像認識×機械学習って感じでたのしそう。

技術書クラウドファンディングiOS 11 Programming」プレビュー

たまたま行ったここが、この日一番楽しかった。僕もいつか本書きたいなと思ったし、気の合う仲間と座談会するのってとても楽しそうと思った。XCode大喜利も聞いてて楽しかった。

LTは三つダイジェストで。

関数を引数として渡す書き方のポイント

functionalなお話でとっても良かった。ちょうど最近ずっとやってるとこ。

翻訳のススメ

翻訳がしたくなった。

iOSDC Japan 2016の賞金を放置しておくと1年でどうなったか?!

やっぱりみんなお金が好き。

 

まとめの感想

いつかやりたいことの備忘録としていい感じになりました。忘れたらここを見返そうと思います。あとMacが早くほしいです。。

この三日間合計で24個のTalk、30個のLTを聞きました。頭に入ってくる情報量がやばかったです。大学の秋学期に向けていいリハビリになりました。僕もいつかはカンファレンスでプレゼンできるといいなあと思います。

聞きたかったけど聞けなかったやつ、Youtubeで公開されるらしいので後で見てみようと思います。楽しい三日間でした。