![見出し画像](https://assets.st-note.com/production/uploads/images/123290703/rectangle_large_type_2_1358a3209668fb797c5fd32a08204044.png?width=1200)
【Console Application】コンソールアプリを作り終えて 3【学習記】
今回の概略
Java …やはりまだ Java なのだろうか…弱点は有るものの安定度が高い😑
Kotlin … when 最強!他の言語にも欲しい!🤪
でも代わりに三項演算子無いのよね…😞
Objective-C … C/C++ がそのまま使える…けど C/C++ の悪いところもそのまんま…🙄
Swift …まぁ、 Apple 端末はこれで作るのが最新なので…とは思うけどこの言語、使いにくい…😞
#学習記 #Java #Kotlin #Objective_C #Swift
各言語の特徴
開発環境
文法とか ←今ココ
マルチプラットフォーム
携帯端末アプリ開発言語 学習記 5
https://note.com/sayka/m/m1871a4eaac8e
ファイルと DB の学習を Swift で実施
携帯端末アプリ開発言語 学習記 4
https://note.com/sayka/m/m1cbc4700d7fc
ファイルと DB の学習を今度は Objective-C で実施
携帯端末アプリ開発言語 学習記 3
https://note.com/sayka/m/m99e4ad238ed5
ファイルと DB の学習を今度は Kotlin で実施
携帯端末アプリ開発言語 学習記 2
https://note.com/sayka/m/m8e20f8373d94
基本文法ヨシ! 次の課題はファイルと DB
携帯端末アプリ開発言語 学習記
https://note.com/sayka/m/m7bb64c6a359f
Android は Java か Kotlin 、 iOS・iPadOS は Objective-C か Swift
1言語で両環境開発できないのなら致し方ないってなって始めた学習の記録
文法とか
ロジックを組む時に言語の書きやすさ、みたいのが有ると思うけどそういう観点での感じた事🤤
Java
package という「名前空間」とか main クラス必須とか有るけど概ね作りやすい仕上がりになってるんじゃないかな🤔
さすが C のダメなところを見て作られただけある🤤(言い過ぎ
ただ、配列の仕様に難が有って、そこは C の悪い所そのままみたいな状況になってるかも😑
勿論モノによるけど殆どの場合配列は「積んでいく処理」で使うので List を使う事になって角括弧での添字指定ができないのでそこが不満…かな?🤔
他に移植をする前提なら核となる処理の出発点を Java で組むのはかなり悪くない選択肢だと思う🤤
それくらい(他の3言語と比べると)癖が少ない…と言えると思う🤔
学習記ではたまたま Java から手を付けてたけど、多くの企業案件で使われているのも頷ける🤤
Kotlin
switch の代わりにある when が超強力!これに尽きる🤤
何か困っても Java と同じ書き方で済むのも良い所かな🤔
だけど static が欲しくなった時に companion object とかいう仕組みを使わなくちゃならなくて「 static 使っちゃやーやなの🤬」って感じが凄い😞
null 安全とかいう仕掛けが組み込まれてるけれど null 検査後 null 安全扱いっていう部分がコンパイラのガバで機能しない事が有って結局回避の為に別変数が必要になったりのバッドノウハウが結構要るので熟成はまだ先かなって思う😑
Objective-C
古き良き C 言語にガワを被せた環境で C/C++ でできる事は OC に持ち込める🤤
かつてはメモリ管理で retain , release をチクチク書いて管理しないとならなかったけど autoreleasepool というガベコレみたいな機能が付いて状況が一変🤔
ただ、プロパティの呼び出し方に癖が有って C++ や JS みたいな感覚で self.record みたいにすると getter,setter 無限ループとかハマる要素盛りだくさん😞
他の3言語と比べると列挙の仕様が古く、列挙数の勘定や列挙名探索が難しいなど列挙周りの使いにくさが目立つかな🤔
列挙使うなら NSDictionary か C++ の map 使った方が良いけど他言語からの移植の時に注意が必要で列挙を使った switch を辞書に変換するのは for を使った疑似 switch 等のトリッキーな技法が要るので移植が分かってる場合の列挙と switch の使用は良く考えてから組み込まないとヤバい😑
OC の作法で書くと引数にラベルが付けられる様になり Swift で使用する時の互換性が上がる…かな🤔
Swift
現状 Xcode 族の開発言語としては Swift 一択状態だと思う🤤
OC のライブラリも Swift 関数と似た呼び出しが可能なので取り込みしやすい感じが Java と Kotlin の関係に似ているかも🤔
こちら も Kotlin と同様の null 安全が仕様になっていて Kotlin よりも強めの null 安全に関わる文法などが有って同仕様に関しては Swift に軍配が上がるかなって思う🤔
Swift は `if let` `guard let` で `if(arg != null){/* code */}` という書き方を null じゃないなら代入、と書けるのが良い🤤
学習記では極端に「可能な限り null 安全で」作ったけれど Java , OC では処理内で null チェックしたら別の内部変数へ移す、という書き方にして Kotlin , Swift は null 安全に入れる、という移植で良いかな、移植ありき、なら🤔
列挙をエラーに転換できるのがちょっとびっくり🙄
ただ、 OC みたいなメッセージ付きエラーで、と思うとかなり経験値を積まないと「効率の悪い構造」になっちゃうっぽい😞
他の言語に比べると for の書き方が独特なので「コンパイラを作る」みたいな学習の時にかなり苦労する言語だなと感じたけれどそもそも携帯アプリの開発の話なので関係なかった🤪
書きやすさ?
うーん…これは一長一短で、どの言語が一番不満度が高いのか、みたいな話になってくる気がするぽ😑
無難なのは やっぱり Java だけど package の階層構造めんどいとか配列は List 使うべきでそれだと角括弧使えないで全部関数で取得かよとか弱点あるぽ😞
when が強い Kotlin も if の then else の値が代入できたりするけど三項演算子がそのせいで無かったり static 使用が極度に面倒だったり…🙄
OC は C/C++ の悪い所は全部そのままで列挙や switch 有るけどかなり貧弱…多分この言語が最下位かな… C で書ける、それだけが利点😭
そして Swift は…意識高い系が作ったのか知らないけど他の3言語触った後だと開発言語と何か方向が少しズレた物を扱ってる気持ちになって…そう、判読しにくい言語…かな?🤔
手続きも手順も圧倒的に多い OC がダントツ最下位かな😞
C 言語的な圧縮記法は Java でもできるし…🙄
なんか纏めてて OC のイイトコ少なくて C 言語畑出身としては哀しくなって来た…😞
この記事が気に入ったらサポートをしてみませんか?