API開発のためのプログラミング言語"Ballerina"の直感的な構文について解説します。認証や承認、OpenAPIツール、可観測性、SQL/NoSQLクライアントライブラリなど、重要な言語機能についても論じます。記事を読み終えれば、Ballerinaが次のバックエンドAPI開発の有力な候補である理由がよく理解できるでしょう。2022年4月InfoQ編集チームが2022年に進化するソフトウェアアーキテクチャと設計のトピックをどのように見ているかの概要です。アーキテクトが今、何を設計しているかに焦点を当てています。Pan氏が、分散データベースシステムにおけるシャーディングアーキテクチャのパターンについて論じます。ShardingSphereプロジェクトがデータシャーディングの課題にいかに対処しているかを説明した上で、DistSQLを使って分散データベースと暗号化テーブルを生成する方法の実例2つを論じています。カルチャー&手法カオステストで、見えない課題からアプリケーションのレジリエンスを改善するこの記事では、Netflixが提唱するカオステストの原則を列挙した。読者は、カオステストが提供するメリットとデメリットを理解できるはずだ。することで、カオステストを行うかどうかの判断材料となる。リスクに対するすべてのメリットを考慮して、カオステストを行うために経営陣を説得すべき理由も説明した。Frege氏から名付けられたFregeは、JVMのための純粋関数型の強力な型付き言語だ。FregeはHaskellと似ていて、「もっともHaskellらしいコードを修正せずに、または、見て分かる最小限の調整だけで動かせる。」Fregeの開発者たちによると、Fregeは「パワー、単純さ、表現力の豊かさの組み合わせにおいて、類を見ないもの」である型システムをJVMに持ち込んだ。評価と型推論をサポートし、純粋性とデフォルトの不変性を可能にする。そのため、副作用は宣言された時のみ使うことができる。Fregeは、以下のようなHaskellの機能をほぼサポートしている。ADTとパラメトリックポリモフィズムを用いた型クラスより高いランクの型パターンマッチングリストの包含do表記ポイントフリースタイルモジュールfunctor、monoid、semigroup、monadなどの数学的な抽象Fregeの重要な利点はJava相互運用性であり、Javaライブラリを再利用したり、JavaからFregeのコードを呼び出したりできる。FregeはJavaを呼ぶときに特に厳密であり、プログラマはFrege用語でJavaの型を宣言しなければならない。これにより、型システムの健全さを保ち、純粋性、スレッドの安全性、遅延を実施する。JVMでFregeを利用できることで、大抵のJavaプロジェクトは、Haskellのパワーを使って、特定の問題を解決できる。これは、標準出力で現在時刻を表示するFregeプログラムの例だ。secondsFregeコンパイラ、標準ライブラリ、REPL、その他のツールは、すべてFregeで書かれており、言語の安定性と完全性を証明している。Fregeには、機能を試せるオンラインREPLがある。Wechsung氏に話を聞いた。Fregeの歴史を詳しく教えてください。Fregeはどのように生まれ、進化したのですか?Fregeは、実は単なる偶然で生まれました。2003/2004年頃、メーリングリストで型推論について書かれたブログを読みました。私はすっかり魅了され、当時は黒魔術のように見えていたことを理解しようとしました。Peyton-Jones氏によって書かれた論文をどうにかこうにか読みました。Compiler)の作者、また、今でも主にメンテナンスをしています。その論文は、「より高いランクの型のための実際的な型推論」について書かれていて、Haskellの型チェッカーの実装例を含んでいました。その当時、私が好きだった言語はPerlで、Haskellはまったく理解していませんでした。そこで、私は、型推論を本当に理解するために、Perlで型推論のアルゴリズムを実装することにしました。これは、かなりうまくいきましたが、型チェッカーが動いた“コード”は、Perlでエンコードされた、甘ったるいラムダ計算論法を表したものでした。(今は“埋め込み式DSL”と言うでしょう。私は、いつもパーサのようなものを書くのを楽しんでいたので、テキストファイルから式を読むフロントエンドを追加しました。一度、これがうまくいくと、型チェックした式をPerlのコードに変換することもできると考えました。これはうまくいきましたが、みじめなほど遅かったのです。セルフホスティングコンパイラなんていらないと思いました。Perlはこのビジネスで使うには遅すぎるとわかったので、もっと速いホスト言語を探しました。私は、PASCAL、C、C++といくつかのスクリプト言語を自由に使えましたが、Cを出力するHaskellコンパイラはすでに存在していて、そこでは何も新しいことがありませんでした。Cを使わないことに決めました。その時、私はJavaを習ったことがなかったので、Javaの練習プロジェクトにしない手はありません。多くのプログラマと同様、私はやりながら覚えたほうがよいのです。作りながら沢山のことを学びました。残念なことに、私はコンパイルする言語について明確なアイディアを持っていませんでした。それは、私が手に入れられるものはなんでも読んだにもかかわらず、関数型プログラミングに関して十分学べなかったからです。信じられないかもしれませんが、当時はそのような状況でした。Hudak氏等が、大抵は学術的な論文でしたが、数多く発表していました。これらの論文は理解するのが難しい部分があり、私は、しばしば悪戦苦闘しました。私はモナドをなかなか理解できませんでした。本職の数学者、ただし、研究分野は整数論である私の父に質問しさえしました。モナドに関するWikiの記事を探し出し、父に説明してくれるように頼みました。これは全部、本当に簡単なことだ。」これが、私が持った疑問そのものでした。して私は、プログラマとして、モナドについて知らなければならないのでしょうか?それにもかかわらず、私はセルフホスティングのフランケンシュタインのような言語をどうにかこうにか作りました。明確な意味論もなく、純正でもなく、lazyでもstrictでもありませんでした。whileループまでありました。ついて、私はいくつかのことを学びました。私は全部不満に思い、Frege2で、Frege2のコンパイラを書く過程において、自分のアプローチに欠陥があることを次第にはっきりと理解するようになりました。この頃、私はfregepl.blogspot.comでブログを始めました。このプログでは、2007以降の当時の私の苦労が見られるオリジナルの投稿が読めます。2008/2009年は、ほとんど進みませんでした。個人的な出来事があり、さらに、引っ越したので、プログラミングをする代わりに、壁を塗ったり、他のことをしたりするのに忙しかったのです。2の経験から、私はやっと言語全体を見直すことができました。2010)がありました。このゴールは、2011年5月に大体達成でき、code.google.comでFregeをリリースしました。Codeが衰退し始めたので、GitHubに移りました。翌年、Fregeのあらゆる種類のバグを修正し、Eclipseプラグインを開発するのに忙しくなりました。その間に、初期導入者たちはFregeの存在に気付きました。Gronau氏の名前を挙げましょう。彼らは、「カテゴリ理論」型クラスのApplicative、Monad等の様々なレイアウトを採用するように私に勧め、それらを実装してくれました。(この“Applicative-Monad”構造は、何年もの間、Haskellコミュニティで提案されていましたが、最近GHCで採用されただけでした。Madasamy氏が実装に参加し始めました。REPLはオンラインバージョンにあり、スタンドアロンアプリケーションとして、ローカルで使えます。223のスクリプトをサポートし、JavaからFregeスクリプトを実行できるようにしました。何年もの間、彼は、堅実で情熱的な努力によって、Fregeにとても沢山のことをしてくれました。悲しいことに、私たちは現実世界でお互いに会ったことがありません。Supportを担当し、FregeがOSGiに準拠しているか確認しました。leinツールを可能にするプラグインを作成しました。Perry氏は、gradleで同様のことを行い、Groovyビルドツールを作成しました。König氏とのコラボレーションです。Action”によって、Groovyの世界で有名であり、純粋な機能原則の、思慮深く見識のある提唱者、そして、同時に、JVMエコシステムのエクスパートです。REPLのJavaFXバージョンに貢献したことです。Fregeを利用しているプロジェクトを知っていますか?最初に、私が知る限り、Fregeを利用している商業的なプロジェクトはありません。教育分野では活動が見られます。FregeやFregeを使ったことについて、修士論文を書いている人たちがいます。成熟度は両刃の剣です。言語自体とコンパイラはかなり安定し、強固だと主張できますが、モジュールリポジトリ等の付随するインフラストラクチャと共に、多くの作業が必要なライブラリです。一方で、抜きん出たHaskellライブラリのポート、もう一方では、重要なJVMライブラリを完成させ、テストし、ドキュメント化して利用できるようにしなければなりません。完成品に興味があり貢献したい人を歓迎することを宣伝するのに、ここはおそらくよい場所でしょう。その他プログラミングと関係のないことは聞かないことは言うまでもありません。今や、Fregeコミュニティは、非常に小さなものですが、様々な民族がいて、国際的だと言えることを私は誇りに思います。Dayの注目の話題そのものです。Dayは、コミュニティの中心が集まり、Fregeの将来について議論する素晴らしい1日となることでしょう。私が見る限り、重要なポイントは以下の通りです。私が望むのは、Fregeコミュニティは、Haskellコミュニティの一部として自分たちを理解し、同様に、Haskellコミュニティは「私たち」を同類だと受け入れることです。実際に、Fregeは、何よりもまずHaskellの変形か方言になるか、そのように宣伝されるべきです。2010の本当のサブセットになり、いくつかのよく知られたGHC拡張とその他の何かいいものをサポートするでしょう。Java7も使えて、(少なくとも部分的には)Java7とバイナリで互換性があります。6でさえ、Android開発では、あまりにも早く放棄するべきではありません。一般的に、JVM開発に遅れずに、最善を尽くします。広く知られて実績のある、よく使われるGHC拡張をサポートする。マルチパラメタ型クラス、GADT、または、思い浮かぶ存在する型等です。要するに、Fregeは「JVM上のHaskellの変形」として、抜きん出て他を圧倒することを目指すべきです。JVMのための、実践的で純粋なFP言語となるべきです。締めくくりに、Scala、Clojureキャンプの私たちの仲間の機能的なJVMプログラマとの友好的、協力的な関係を楽しみ、持ち続けたいと思っていることを最後に言わせてください。このことを言うのは、衝突や競争をでっちあげて、誇張することで、話を面白くしようとする傾向がジャーナリストやライターにはあることを知っているからです。注目しているかもしれませんが、Scala、Clojure、Groovy、JRuby等は、JVMの中で得意な部分があります。Fregeも例外ではありません。私が知る限り、唯一、私たちが、純粋な関数型の非正格FPの変形を提供します。このパラダイムを他の言語に無理やり強要したいわけではありません。毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。Inc.プライバシーBT。