なんかメモ
[Rewrite Later]
実践比較したいプログラミング言語
言語 | 事前評価 | 社内利用期待度(1-5) | 個人利用期待度(1-5) |
---|---|---|---|
Java | モダン化が図られ、冗長さが薄れてきてるらしい | ||
C# | これでよくね | ||
C | 使う気はないが歴史が古いのと最初に学んだので比較対象には良いのでは | ||
C++ | C とは敢えて分けた。Rust 文法になれかけて抵抗減ったけど cin とか出るとまあわからん | ||
Nim | |||
Rust | |||
Go | |||
Mojo | |||
Python | |||
Julia | |||
Crystal | |||
Ruby | |||
Perl | |||
TypeScript | |||
JavaScript |
-
社内利用期待度
- バグを作り込まなそう・発見しやすそう
- null 安全や適切なスコープなどの仕組みがある
- コーディングルールを守り・守らせ易そう
- リンターやフォーマッタがある
- コードが簡潔になりそう
- ライブラリや基本機能が充実している
- バージョンが 1.0 以上で採用しやすそう
- 動作不良の要因となりやすい
- エスカレーションの際に障害となりやすい
- 環境が統一しやすそう
- 「私の環境では~」を防ぎたい
- Node.js の package.json などの仕組み + devbox/devcontainer などのツールを使えるか
- バグを作り込まなそう・発見しやすそう
-
個人利用期待度
- バグを作り込まなそう
- 開発サイクルを早く回せそう
- コードが簡潔になりそう
- 環境構築が楽そう
テーマ
Web アプリで「」を作成する
言語仕様として実用性と安全性を満たせるかまとめる
実用性と安全性
実用性
コード量
より少ないものを良しとする
文法
より簡潔なものを良しとする
より明快なものを良しとする
より既存知識を活用できるものを良しとする
十分な言語機能
YAGNI 思想にとらわれてない
機能を削ることで覚えやすいかもしれないが、一般的なアプリケーションを作成するには冗長になりすぎて実用性に欠けるのでは?
型推論がある
静的型付けを使う際に、明らかに string なのにわざわざ string と書き続けるのは厄介
コーディングルールの統一
Linter がある
Formatter がある
安全性(バグを作りこみづらい)
メモリリークをしづらい設計
null 安全(null 参照を)
immutable(不変)な値が扱える
変数スコープが直感的である
JavaScript のように var で宣言した変数がグローバルスコープになる非直感的なものは避ける
静的型付け
開発スピードは下がるがバグを生みにくい仕組みである
動的型付けを避ける理由
動的型付けというのはプログラム実行時に変数や引数の型が決まる仕組みである。
主にスクリプト言語で採用される。スクリプト言語では明示的なコンパイルを必要とせず即時実行できる。その為、開発スピードは群を抜く。
しかし、実行時に型が決まる仕組みの為バグを生みやすい。
また、ドキュメンテーションコメントや型注釈を使うことで、人間やリンター向けに変数や引数がどんな型のデータを想定しているか記述できる。
しかし、記述できるのであって強制はしない為、実行時に型が決まることに変わりはない。
PPPPサイクルになってるので、なんか適当にサクッと作るべき
多分動くと思うからリリースしようぜ
(完璧を目指すよりまず終わらせろ)
考えとして大事だなあ