現代のプログラミング言語の最も面白い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構文
対応するJavaScriptの書き方:
esにも対応策が提案されています:tc 39/proposal-pipeline-operator
2パターンマッチングPattern matching
Kotlin構文
3 Reactive (Rx) programming build in the language
Dart構文
4 lambda関数のデフォルトパラメータ
Kotlin構文(デフォルトパラメータとして
JavaScriptの比較
5 Destructuringの解体
Reason構文:
Kotlin構文
es 6はすでに配列解構があり,es 8はオブジェクト解構を増加させた.
6オペレータカスケードCascade operator
Dart構文
対応するJavaScriptの書き方
jQueryを使うと基本的に書き方はdartと一致しますが、両者には本質的な違いがあります
7 if式If expressions
Kotlin構文
if表現に対して好きな人がいて、嫌いな人がいて、どうでもいいと思っている人がいます.私はとても好きで、私は前に知っていた答えがありました.https://www.zhihu.com/questio...
8 Try expressions
Kotlin構文
9自動コリー化Automatic currying
Reason構文:
10メソッド拡張Method extensions
Swift構文:
JavaScriptはプロトタイプに拡張できます.
とても役に立つ特性があると思います.optional-chaining.言及しなかったのは、多くの言語がすでにこの特性を持っているからでしょう.JavaScriptはまだ発展が遅いようですね.の
原文を読み続けます.https://medium.com/@kasperpeu...
本住所: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...