初学者のためのプログラミング Level0 

4月 4日 @ 21:00 ~ 22:00 主催:y-tac

資料

音声データ

https://recordings.mee6.xyz/394100660083359754/1522843201-I7xKOO.mp3 

資料

こちら(hackmd)に話しながら書く形で進行。

目的

  • プログラミングがどういうものかを知る
  • どのようなプログラミング言語があるかの説明

プログラミングとは!

  • コンピューターが実施する命令の集まり
  • パソコンやネットワーク上で動作するサービスは基本的にプログラミング

プログラミングの種類

  • コンパイル型の言語
    • プログラムをバイナリに変換して実行します
    • 基本的に高速
  • インタプリタ型の言語
    • スクリプト言語、処理系が一文ずつ処理を解釈して実施します
    • ある程度柔軟な構文を実現している
    • 遅め。
  • ハイブリット型
    • javaとかscala
    • ソースコードをコンパイルしたバイトコードを仮想マシンで実行する

人気のあるプログラミング言語!

  • C言語/C++

    • コンパイル型の言語
    • 何に使われているか?
      • OS,Kernel,各種処理系などなど
    • 今あるほとんどにCの考え方が使われている
      • 覚えておくと他の言語の勉強が楽
    • 良いとこ
      • 早い。
    • 悪いとこ
      • 楽にプログラミングできない
      • エラーチェックとかもメモリ管理とかも
  • Java

    • ハイブリット型の言語
    • 何に使われているか?
      • ちょっとふるめWebシステム
      • ちょっとしたUIをもつアプリケーション色々
    • ロードは遅い、動いたら早い(仮想マシンが起動すれば早い)
    • 良いところ
      • Cに比べて描きやすい
      • 互換性がしっかりしている。(新しいVerでも古いコードが動く)
      • スクリプト言語に比べて早い(Cに比べるとちょっと遅いこともある)
      • ガベージコレクション(自動メモリ解放機能)があるのでメモリ管理が楽
    • 悪いところ
      • 型の制約がきつく、記述しなきゃいけない内容が多い
      • 帯に短し襷に長し、的なところがある
      • javaが悪いというより、古い負債が結構残ってる
  • Python

    • 蛇の表紙のスクリプト言語
    • 何に使われているか
      • 最近CLIツール類、webアプリ、機械学習
    • ブロック構造をインデントで表現する
    • 良いところ
      • お行儀が良い。基本的に1つのことは1つのやり方でやる
      • ライブラリが非常に豊富。大概のことができる
      • インデントが厳しく、コーディング規約の適用がらく
      • numpyが存在する
    • 悪いところ
      • スクリプト言語なのでちょっと遅いです。特にfor
      • インデントが崩れるとバグります。コピペをミスるとバグる
      • メジャーバージョンが変わると違う言語になる 
  • Ruby

    • スクリプト言語。開発者が日本人
    • 日本語ドキュメントの量がトップクラス
    • 何に使われているか
      • webアプリ、特に文字列を色々するツールによく使われている
    • 良いところ
      • 日本語ドキュメントが多い
      • 記載の自由度が高い
      • Railsでかなり楽にwebアプリケーションが開発できる
      • リソースの取り扱いが楽
    • 悪いところ
      • スクリプト言語なのでちょっと遅いです。
      • メジャーバージョンが変わると違う言語になる
      • 比較的ライフサイクルが短い
      • お行儀の悪い書き方が自由にできてしまう
  • Javascript

    • 罪深い言語
    • ブラウザで動作する言語
    • 何に使われているか
      • webのフロントエンド。動的なページだとほぼ確実に使われている
    • 良いところ
      • 事実上どこでも動く
      • 互換性は割としっかりしています(ブラウザ内では)
      • Node.jsなどによりjsでwebアプリ全部書ける
    • 悪いところ
      • ブラウザごとに微妙に挙動が違います
      • いろんなところでいろんなものを書き換えられるので予想外のバグが多い
      • 実は純粋なオブジェクト指向じゃない
      • Javaとは全く関係がない
      • 関数によっては突然非同期処理を始める     

プログラムの勉強の仕方!

  • 大事なこと
    • プログラミング言語は道具である
    • 目的を明確化しよう!
  • プログラミング言語何がオススメ?
    • モダンなjavascript(Typescriptとかそういう拡張)
    • python(可読性高くないとバグる、なんでもできる)
      • djangoとかのフレームワークもおすすめ
  • 勉強のやり方のおすすめ
    • 目的を明確にしておこう
    • 書籍を一つ買って全部読もう
    • 自分で実際に何か作ろう
    • 最新のverを選ぼう - 書籍がないこともあるけども・・・

講演

参加者の声

参加者の声

(Discord 上の発言で、なにか取り上げたいものがありましたら記載お願いします)

Q & A

(Discord 上に質問が流れたらピックアップお願いします)

  • Q.最近知っといた方がいいライブラリとかありますか?<javascript

    • A.
  • Q.python主流のフレームワークってなにになりますか?

    • A.djangoとかおすすめです