50 Years of IT Language War

50年编程语言榜单战争史,估计里面的开发语言很多你都不认识

Only C++ stays relevant in Top 10 position for 35 years.

https://m.toutiaoimg.cn/a6880830172367421963/?app=news_article&is_hit_share_recommend=0&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

C++17 Ideal for Mobile Cross-Platform Development

Mobile Cross-Platform :

  1. Android
  2. iOS
  3. Windows
  4. Linux
  5. Web
  6. HongMeng (aka Harmony) OS
  7. IoT

Cross-platform C++ in IDE :

  1. Mac : Xcode, Android Studio, Visual Studio on Mac (fee), Eclipse
  2. Windows : Visual Studio (full featured, pay fee), VS Code (limited feature, free), Eclipse
  3. Linux : many eg. Eclipse…

“So you want to write cross platform code, PAL? (Part I)” by Gal Shelef https://link.medium.com/ijqPGGDWd0

Apps Architecture:

The Salami Method

  • Cross-platform Language: C++ (preferred version 17 with STL for Functional Programming)
  • Apps divided into 2 parts:
    • UI logic: platform specific
      • Android : Java / Kotlin in Flutter framework
      • iOS: Swift / Objective-C
    • Core logic: C++17

Platform-specific Binding : PAL

What is Harmony OS? Huawei’s “Android rival” explained!


https://www.androidauthority.com/huawei-harmony-os-1030848/

1. Harmony OS : Micro-Kernel for ‘1+8+N’ IoT devices

2. ARK Compiler for Android code compatibility (Java, C/C++, Kotlin, JS), yet 60% faster

3. AppGallery : confirmed ‘Yes’ for Facebook, WhatsApp, Insragram. Next ? will be Google Mobile Services (YouTube, Gmail, Google Map, Google Playstore )

4. HMS (Huawei Mobile Services) : $1 billion Apps development fund by Huawei

Flutter vs React Native vs Xamarin or Native Codes: Which is the best choice for 2019?

Mobile Apps developed for cross-platform : iOS, Android, Web… (Huawei HongMengOS ? )

  1. Flutter (Google) — Dart
  2. Xamarin (Microsoft) — C#
  3. React Native (Facebook) —Javascript

https://towardsdatascience.com/flutter-vs-react-native-vs-xamarin-which-is-the-best-choice-for-2019-2bc30fc76442

The above analysis for the 3 tools is neutral – beauty is in the eye of the beholder – they are more or less the same family based on current Object-Oriented paradigm.

However, I would recommend a 4th option with additional future-promising Functional Pragramming (FP) paradigm for multi-platform mobile apps:

4. Native Codes in C++ (Version 17) with Standard Template Library.

  • C++ can be developed in Android Studio, called by Java / Kotlin / Flutter via JNI interface.
  • Or in React Native IDE.
  • IEEE 2019 Ranking : C++ / C is ranked 3rd popular language behind Python (1st) & Java (2nd), but it is unique in multi-paradigm & multi-platform, an advantage compared to the others.

“The dawn of a new era in app development”

[Source: please read the below link:]

“The dawn of a new era in app development” by gk_ https://link.medium.com/fDulXo3zWZ

The dilemma of maintaining 4 code bases for multi-platfofms:

  1. iOS,
  2. Android,
  3. Windows,
  4. Web.

Key Points:

  • Cross-platform tools for Web / Native codes.
  • Google’s future Android-replacement Fuchsia OS (OO&FP Logic : C++/C, Phone UI: Dart, Web: Rust, Server: Go) Flutter framework for iOS / Android / Windows / Web [Notice: the conspicuous absense of Java]

华为 鸿蒙 Huawei HongMeng‘s answer : “1+8+N” iOT multi-platforms (which will soon obsolete Apple iOS & Google Android)

  1. Smart HD TV (out in August 2019)
  2. Mobile Phones / Notepads (April 2020 Huawei P40)
  3. Driverless Car
  4. PC Desktop
  5. Earphones
  6. AI Sound boxes
  7. Virtual Reality (VR)
  8. Wearables
  9. (+ N) All iOT devices

Remark:

C++ version 17 (Standard Template Library STL‘ for Functional Programming) is multi-paradigm : Imperative, OO & FP. It curently supports Android as Native codes (ie bypass JVM).

The Future of Programming is Dependent Types

Read the example in this excellent blog for explanation of Dependent Type (ie Type depends on its Value) :
eg.

Type ArrayOfOne with value ‘length’ of INT 1.

Type ArrayOfTwo with value ‘length’ of INT 2.

Type ArrayOfThree with value ‘length’ of INT 3.

Then compiler will know if correct (before run time error) :

ArrayOfThree = ArrayOfOne + ArrayOfTwo

or wrong if:

ArrayOfTwo = ArrayOfOne + ArrayOfThree

https://medium.com/background-thread/the-future-of-programming-is-dependent-types-programming-word-of-the-day-fcd5f2634878

What Makes Functional and Object-oriented Programming Equal

http://codinghelmet.com/articles/what-makes-functional-and-object-oriented-programming-equal

Comparison of 4 Functional Programming (FP : F#, Lisp/Clojure Haskell, Scala,… ) concepts in Object-Oriented (OO: C#, C++, Java,… ) :

[Not covered here] : There are other FP techniques lacking in OO: Functor (FoldMap), Monad, etc.

1. Function:

2. Closure (variable binding)

3. Currying

4. Function Composition

Conclusion:

Programming with Math (Exploring Type Theory)

If you are inventing a new language, start to study Type Theory.

These 3 are the same thing:

Logic = Category = Type

Unfortunately Milewski’s presentation was cut short due to time constraint, he only presented the first few “Type” functions:

  • Unit,
  • Product,
  • Sum,
  • Exponential,…

(these are from Category Theory refound in Type Theory).