現代のプログラミング言語の最も面白い10大特性

3776 ワード

dev-reading/feは、dev-reading/feの学習知識に依存しないで、読書、ガイド、速読のrepoである.本repoは文章の内容を迅速に理解するツールにすぎず、全文の解読と翻訳を提供していない.このプラットフォームを通じて、文章の内容を迅速に理解し、興味のある文章を見つけて、全文を読むことができます.
本住所:https://github.com/dev-readin...
読み時間は2分ほどです
現在、多くの「現代」言語は依然として古いC-style文法を使用している.
プログラミング言語の年代を見てみましょう.Lisp(1958)、Smalltalk(1972)、Objective-C(1984)、Haskell(1990)、OCaml(1996)、などです.これらはすべて前世紀の言語です.
著者らは,研究対象としてReason,Swift,Kotlin,Dartのいくつかの最新言語を選択し,10の特性をまとめた.
1パイプオペレータPipeline operator
Reason構文
let newScore = me.score
  |> double
  |> (it) => add(7, it)
  |> (it) => boundScore(0, 100, it);

対応するJavaScriptの書き方:
boundScore(0, 100, add(7, double(me.score)));

esにも対応策が提案されています:tc 39/proposal-pipeline-operator
2パターンマッチングPattern matching
Kotlin構文
when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")
}

3 Reactive (Rx) programming build in the language
Dart構文
input.onKeyDown                                              
  .where((e) => e.ctrlKey && e.code == 'Enter')              
  .forEach((e) => dispatch(addTodoAction(e.target.value)));

4 lambda関数のデフォルトパラメータ
Kotlin構文(デフォルトパラメータとしてitを使用)
strings
  .filter{ it.length == 5 }
  .map{ it.toUpperCase() }

JavaScriptの比較
strings
  .filter{ it => it.length === 5 }
  .map{ it => it.toUpperCase() }

5 Destructuringの解体
Reason構文:
let someInts = (10, 20);
let (ten, twenty) = someInts;

type person = {name: string, age: int};
let somePerson = {name: "Guy", age: 30};
let {name, age} = somePerson;

Kotlin構文
data class Person(val name: String, val age: Int)
val(name, age) = Person("Guy", 20)

es 6はすでに配列解構があり,es 8はオブジェクト解構を増加させた.
6オペレータカスケードCascade operator
Dart構文
querySelector('#button') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => dispatch(confirmedAction()));

対応するJavaScriptの書き方
var button = querySelector('#button');
button.text = 'Confirm';
button.classed.add('important');
button.onClick.listen((e) => dispatch(confirmedAction()));

jQueryを使うと基本的に書き方はdartと一致しますが、両者には本質的な違いがあります
7 if式If expressions
Kotlin構文
val result = if (param == 1) {
    "one"
} else if (param == 2) {
    "two"
} else {
    "three"
}

if表現に対して好きな人がいて、嫌いな人がいて、どうでもいいと思っている人がいます.私はとても好きで、私は前に知っていた答えがありました.https://www.zhihu.com/questio...
8 Try expressions
Kotlin構文
val result = try {
    count()
} catch (e: ArithmeticException) {
    throw IllegalStateException(e)
}

9自動コリー化Automatic currying
Reason構文:
let add = (x, y) => x + y;   /* same as (x) => (y) => x + y; */
let five = add(2,3);         /* 5 */
let alsoFive = add(2)(3);    /* 5 */
let addFive = add(5);        /* y => 5 + y; */
let eleven = addFive(6);     /* 11 */
let twelve = addFive(7);     /* 12 */

10メソッド拡張Method extensions
Swift構文:
extension Int {
    func repetitions(task: () -> Void) {
        for _ in 0..

JavaScriptはプロトタイプに拡張できます.
とても役に立つ特性があると思います.optional-chaining.言及しなかったのは、多くの言語がすでにこの特性を持っているからでしょう.JavaScriptはまだ発展が遅いようですね.の
原文を読み続けます.https://medium.com/@kasperpeu...