コンピューター ウィンドウズ インターネット

世界で最高のプログラミング言語。 明るい未来を持つ5つの有望なプログラミング言語

JavaScriptは、Webページに基本的な対話機能を追加するのに適していますが、Webアプリケーションコードが数千行のコードである場合、その弱点が明らかになります。 そのため、GoogleはDartを作成しました。これは、ウェブプログラミングの新しい母国語になると同社が信じている言語です。

JavaScriptと同様に、Dartは構文を使用して キーワード C言語で使用されているものと似ていますが、大きな違いの1つは、JavaScriptはプロトタイプに基づいていますが、Dartのオブジェクトは、C ++やJavaのようにクラスとインターフェイスを使用して定義されていることです。 Dartを使用すると、プログラマーは静的型を使用して変数を追加で定義することもできます。 アイデアは、DartをJavaScriptと同じくらい親しみやすく、動的で、柔軟性のあるものにすると同時に、開発者が高速で実行しやすく、見つけにくい間違いを犯しにくいコードを記述できるようにすることです。

ダートが使える場所は少ないです。 クライアントまたはサーバー(Node.jsなど)で実行するように設計されていますが、クライアント側のDartコードを実行する唯一の方法は、JavaScriptにクロスコンパイルすることです。 ただし、その後もすべてのブラウザで動作するわけではありません。 ただし、Dartは無料のBSDライセンスの下でリリースされているため、Googleの条件に同意する販売者は、製品でこの言語を自由に使用できます。 グーグルがしなければならないのは、業界全体を説得することだけです。


研究中のプログラミング言語#2:セイロン

Gavin Kingは、RedHatで開発している言語であるCeylonが「Javaキラー」になるべきだと否定しています。 Kingは、Java用のHibernateオブジェクトリレーショナルマッピングフレームワークの作成者としてよく知られています。 彼はJavaが大好きですが、まだ改善すべき点はたくさんあると考えています。

KingがJavaについて気に入らない点のいくつかは、言語の冗長な構文、ファーストクラスおよび高階関数の欠如、およびメタプログラミングサポートの欠如です。 彼は、構造化データを定義するための宣言型構文がないことに特に悲しんでいます。これは、キングが「JavaをXMLと同等にする」と述べています。 セイロンはこれらすべての問題を解決することを目指しています。

キングと彼のチームは、車輪の再発明を行う予定はありません。 Ceylon仮想マシンはありません。Ceylonコンパイラは、JVMで実行できるJavaバイトコードを生成します。 しかし、セイロンは単なるコンパイラではありません。 戦略的目標 このプロジェクトのキングによれば、「肥大化」し、扱いにくく、まだ完全に近代化されていないJavaに代わる、セイロンの新しい開発キットの作成です。

これは難しい作業であり、これまでのところ、RedHatはCeylonのユーティリティをリリースしていません。 キング氏によると、コンパイラーは今年発売予定です。 しかし、すぐに「100%純粋なセイロン」で書かれたソフトウェアを期待しないでください。


研究されたプログラミング言語#3:行く

F#コードはOCamlコードにいくぶん似ていますが、独自の興味深い構文が含まれています。 たとえば、科学的な計算を容易にするために、F#の数値データ型を単位にすることができます。 F#は、非同期I / Oを容易にし、CPUを並列化し、プロセスをGPUに出力するための構造も提供します。

Microsoft Researchで長期間成熟した後、F#はVisual Studio2010に同梱されています。 さらに良いことに、全社的ではありませんが、MicrosoftはF#コンパイラとルートライブラリをApacheオープンソースライセンスの下で利用できるようにしました。 無料で使い始めることができ、MacおよびLinuxシステムでも使用できます(Monoランタイムを使用)。


研究されたプログラミング言語#5:Opa

Webプログラミングは非常に複雑です。 最も単純なWebアプリケーションでさえ、クライアント用のHTMLとJavaScript、サーバー用のJavaまたはPHP、データベース用のSQLなど、複数の言語で記述された無限の行で構成されています。

Opaはこれらの言語を個別に置き換えるものではありません。 さらに、それらすべてを一度に置き換えようとし、Webプログラミングのまったく新しいパラダイムを表しています。 Opaアプリケーションでは、クライアントユーザーインターフェイス、サーバーロジック、およびI / Oデータベースはすべて同じ言語Opaで記述されています。

これは、クライアント側とサーバー側のフレームワークの組み合わせによって実現されます。 Opaコンパイラが実行場所を決定します このプログラム(クライアント、サーバー、またはその両方で)、次にそのコードを実行します。 クライアントプログラムの場合、OpaをAJAX呼び出しを含む適切なJavaScriptコードに変換します。

当然のことながら、このような統合システムでは、最終的には魔法のようなものが生まれるはずです。 Opaランタイムは、スタンドアロンの代替手段に置き換えることができない独自のWebサーバーとデータベース管理システムを統合します。 ただし、わずか数十行のコードで最新のデータ駆動型Webアプリケーションを開発できることを考えると、これはそれほど重要ではないかもしれません。 Opaは無料で提供されます この瞬間は64ビットのLinuxおよびMacOS Xプラットフォームで利用できますが、他のポートはまだ開発中です。


研究されたプログラミング言語#6:ファントム

Javaまたは.Netアプリケーションを作成しますか? Fantomで作成する場合は、選択を行ってからプラットフォームを変更することもできます。 これは、Fantomが最初からクロスプラットフォームモビリティ向けに構築されていたためです。 Fantomプロジェクトは、JVMまたは.Net CLIの両方のバイトコードを出力できるコンパイラーだけでなく、JavaAPIと.NetAPIを分離し、移植性の追加レイヤーを作成するAPIのセットで構成されています。

ファントムの機動性をさらに高めることが計画されています。 FantomからJavaScriptへのコンパイラーはすでに利用可能であり、次のターゲットには、iOS用のLLVM、Parrot VM、およびObjective-Cコンパイラープロジェクトが含まれる場合があります。

Fantomは、Academic Free License 3.0に基づいて無料で配布され、WindowsおよびUnixライクなプラットフォーム(Mac OS Xを含む)で利用できます。


研究されたプログラミング言語#7:ジンブ

混合された性質のため、Zimbuの構文は独特で具体的ですが、同時に多くの機能を備えています。 Cで使用されているものと同様の式と演算子を使用しますが、独自のキーワード、データ型、およびブロック構造を使用します。 メモリ管理、スレッド、パイプラインをサポートします。

唯一の問題は移植性です。 Zimbuはコンパイルされた言語ですが、そのコンパイラーはANSI Cコードを生成し、バイナリーは組み込みのCコンパイラーを備えたプラットフォームでのみ作成できます。

残念ながら、Zimbuプロジェクトはまだ開発中です。 コンパイラと一部のサンプルプログラムは自分で作成できますが、すべての有効なZimbuコードが期待どおりにコンパイルおよび実行されるわけではありません。 宣言された関数のすべてがまだ開発されているわけではなく、すでに提示されている関数のいくつかは正しく機能しません。 言語仕様も時間の経過とともに変更される可能性があり、必要に応じてキーワード、タイプ、および構文が追加されます。 その結果、ドキュメントも不完全です。 ただし、試してみたい場合は、前提条件のユーティリティがApacheライセンスの下ですでに利用可能です。


研究されたプログラミング言語#8:X10

並列データ処理は、かつてはソフトウェア開発の専門的なニッチでしたが、マルチコアプロセッサと分散コンピューティングの急増に伴い、並列処理が人気を博しています。 残念ながら、現在のプログラミング言語はこの傾向に追いついていない。 これが、IBM ResearchがX10を作成している理由です。これは、開発者の生産性を「10倍」にすることを目的とした最新の並列アーキテクチャー向けに特別に設計された言語です。

X10での並列処理は、PGASプログラミングモデル(共有グローバルアドレス空間モデル)のおかげで可能です。 コードとデータはブロックに割り当てられ、異なる「スペース」に分散されるため、プログラムをシングルスレッドのプロトタイプ(1つのスペース)から1つ以上のマルチコアプロセッサで実行されるマルチスレッドのプロトタイプ(複数のスペース)に簡単にスケーリングできます。 )高性能クラスター内。

X10コードはJavaに最も似ています。 基本的に、X10ランタイムは、JVMの埋め込み実行可能ファイルとクラスファイルの両方として使用できます。 X10コンパイラは、C ++またはJavaソースコードのいずれかを出力できます。 将来的にはJavaとの上位互換性を開発する計画があります。

その間、言語はすでにかなり発達していますが、発達しています。 コンパイラとランタイムは、Linux、Mac OS X、Windowsなどのさまざまなプラットフォームで利用できます。 追加のユーティリティは、Eclipseベースの対話型開発環境(IDE)とデバッガーであり、これらはEclipse PublicLicenseの下でライセンスされています。


研究されたプログラミング言語#9:haXe

ポータブルコードの記述には、多くの言語を使用できます。 CコンパイラはほとんどすべてのCPUアーキテクチャで使用でき、JavaバイトコードはJVMがどこにあっても実行されます。 しかし、haXe(「hex」と発音)は単なるポータブルではありません。 これは、組み込みからさまざまなオペレーティング環境で使用できるマルチプラットフォーム言語です。

ダイナミックに変化する世界では、昨日尊敬されていた職業だけが無に変わるとき、多くの人々が人生で何かをすることを探しています。そのため、それは興味深く、現在に関連し、同時に利益をもたらします。 非常に多くの場合、そのような検索はプログラミングにつながります。優れたプログラマーは、CISであっても、数千ドルを稼ぎ、多くの自由な時間、リモートで作業する機会、そしてキャリアの成長のチャンスを持っています。

これらの利点に加えて、プログラミングはそれを習得するために、大学でズボンを拭くのに何年も費やす必要がないという点でも異なります。 独学はここですべてを決定します、インターネットはすべてを持っています 必要な材料あらゆるプログラミング言語の自習を成功させるために:テキスト形式のレッスン、ビデオチュートリアル、指示、経験豊富な専門家からのアドバイス、その他の教材。 このようにして、最新のプログラミングテクノロジーを簡単に習得し、本当にまともな仕事を見つけることができます。

しかし、ビジネスに取り掛かる前に、1つの重要な質問に答える必要があります:2017年に関連する最新のプログラミング言語はどれですか?時間と労力を費やす必要があるのはどれですか? ここでの正解は、学習プロセスの複雑さとスピード、実際の活動に参加するための最小しきい値、さらなるキャリアの見通しなどに大きく依存します。

2017年のプログラミングと言語の有望な分野

勉強する特定のプログラミング言語(1つ以上)を決定するには、最初に質問に答える必要があります:プログラミングのどの領域で人が働きたいですか? 現在、最も人気があり、急速に発展している分野は次のとおりです。

Webプログラミング技術。ウェブサイトの開発、 オンラインサービス銀行、オンラインストア、企業のランディングページなど、これらはすべてWebプログラミングの一部です。 地球上でますます多くの人々がインターネットユーザーになり、それはより速くそしてより安くなり、成熟した老年の人々でさえインターネットのアクティブユーザーになりつつある。 2017年には、この傾向は強まっているだけであり、その開発の上限はまだ見えていません。 したがって、インターネットに関連するプログラミング言語を学ぶことは非常に有益です。 それらの中で最も人気のあるリストを以下に示します。

ガジェットのプログラミング:スマートフォン、タブレット、スマートウォッチ、バーチャルリアリティグラスなど。 また、非常に興味深く、急速に発展している活動分野でもあります。 世界中の何十億もの人々がガジェットを使用し、ガジェットに関するニュースを読んだり、ビデオを見たり、音楽を聴いたり、その他多くのことをしています。 これらの電子機能はすべて、適切に作成されたソフトウェアのおかげで可能です。 多くの場合、物理デバイス自体よりもはるかにコストがかかります。 この分野でのプログラミングは今では非常に有益です。 ここではプログラミング言語が最も頻繁に使用されていることに注意してください。 上級.

どの言語を選択するか

どの言語が最も現代的であるかを言うことは不可能です。 それらの多くは非常に広く積極的に使用されています。 しかし、有望なプログラミング言語に関して言えば、最良のものは次のとおりです。

  • Java。 コンピュータとガジェットの両方のアプリケーションを開発するために使用できる、最も用途が広く人気のあるプログラミング言語。 アンドロイド OS。 構文が理解しやすく、非常に簡単かつ迅速に学習できます。最初のJavaプログラムは、トレーニング開始から数週間後に作成できます。 それを非常に有望にする主な特徴は、現在非常に急速に開発されているAndroid用のプログラミングへの使用です。
  • NS #。 素晴らしいオプションコンピュータシステムのためのプログラムを書くことに彼の活動を捧げたい人のために。 マイクロソフトのさまざまなプラットフォームおよびサービス用のほとんどのプログラムを作成するための基礎となるのは、CIシャープ言語(C#)です。 .NETとAzureを使用してWebアプリケーションを開発したり、Windows用のプログラムやさまざまなビジネスアプリケーションなどを直接開発したりするために使用できます。 C#を理解するのは少し面倒ですが、長期的には効果があります。
  • PHP。 あなたの仕事がインターネットリソースのための高品質のスクリプトとインタラクティブなテンプレートを書くことであるか、サーバーの管理者になることであるなら、それは今非常に有益な職業です、そしてPHPは 一番いい方法そのような欲求を実現するために。 現代語プログラミングは、この代表者なしでは実行できません。 彼は非常に迅速かつ簡単に学びます-PHPを徹底的かつ定期的に勉強すれば、2〜3年で非常に良いポジションとそれに対応する給与を申請することができます。

もちろん、これは言語とその分類の完全な特徴からはほど遠いですが、そのような小さなリストでさえ、あなた自身のために良いそして有望な活動分野を選択するのに十分です。

現代のプログラミング言語の完全なレビューには時間がかかりすぎるかもしれませんが、これはそれほど必要ではありません。主なことを覚えておく価値があるからです-どの言語にも堪能な人は確かに次の分野で自分の場所を見つけることができますプログラミング。 そして、これらの言語の1つの知識は確かに良いお金を稼ぎ、興味深い問題を解決するのに十分です。

1957年に最初の高級プログラミング言語Fortranが登場してから約60年が経過しましたが、プログラミングがこれほど長い間大きな進歩を遂げたことは当然のことです。 新しいテクノロジー、新しい概念とプログラミングパラダイム、そしてもちろん新しい言語が登場しました。 原則として、プログラミング言語の作成は時間の要求によるものです。新しいタスクでは、多くの場合、それらを解決するために新しいツールが必要になります。これにより、前のタスクよりもうまく機能します。 この点で、毎年いくつかの新しい言語が登場し、何十年にもわたる実用的なプログラミングで蓄積されたすべての最高のものを吸収し、同時に何か新しいものをもたらします。 最もいくつか 興味深い言語ごく最近登場したプログラミングですが、開発者にとって強力で最新のツールとしての地位をすでに確立しており、この記事で検討します。

迅速

自由言語 一般的用途によって作成された アップル iOSおよびOSX用の開発用。この言語はObjective-Cと互換性があり、1つのプログラムで両方の言語を使用できます。 この言語の開発は、Appleの開発責任者であるChrisLattnerのリーダーシップの下で2010年に始まりました。 Swiftはすでに多くの人からアイデアを借りています 既存の言語非常に異なる方向:C ++からHaskellへ。 この言語の公式紹介は2014年6月に行われ、その使用方法に関する500ページのマニュアルが提供されました。 Xcode 6 foriOSプログラミング環境でSwiftを操作できます。 言語バージョン3.0は、Linuxのサポートを追加します。
この言語はObjective-Cから多くのものを取り入れています。 同時に、それはより安全でより速いものとして位置づけられています。 開発者によると、Swiftコードは同様のObjective-Cコードよりも1.5倍高速に実行されます。

ハック

Facebookによって開発された言語。 外観はPHPに似ています。 Hackのプログラムコードは、PHPもサポートする特別な仮想マシンで実行されます。 言語はオープンソースです-ハックは、その改善に参加したい人なら誰でも利用できます。 この言語はよく知られているPHPに基づいていますが、開発者はまったく新しい信頼性の高いツールを作成することができました。 迅速な作成ウェブサイトやその他のアプリケーション。 その結果、Facebookは非常に感銘を受け、会社のすべてのプロジェクトがHackに移管されました。これはそれ自体が物語っている事実です。

ジュリア

数学計算のための新しい言語。 言語の構文は、Matlabや他の数学言語の影響を受けましたが、大きな違いもあります。 言語自体はCおよびC ++で書かれています。 言語プログラムコードは、JuliaがJITコンパイラを備えているLLVM仮想マシンで実行されます。 コンパイルのおかげで、C ++で書かれたプログラムに匹敵する高速のアプリケーション作業が達成されました。
この言語は、分散コンピューティング、関数のオーバーロード、およびコードの並列化をサポートしています。 Juliaの主なタスクは、高いパフォーマンスを維持しながら、大量の計算を処理することです。 これらの目的のために、クラウドコンピューティングのサポートも言語に追加されました。 純粋に加えて 数学的問題ジュリアの助けを借りて、汎用プログラムを作成することも可能です。

ダート

JavaScriptの代わりとしてGoogleによって作成された言語。 JavaScriptには修正できない「根本的な欠陥」があるため、Webプログラミング用の新しい言語を作成することが決定されました。 同時に、移行を簡素化し、新参者に教えるために、言語は既存の言語と可能な限り類似して作成する必要がありました。 現在、Dartプログラムは2つの方法で実行されます。 仮想マシン DartVMおよびJavaScriptへの変換による。 将来的には、DartはWebプログラミングのユニバーサル言語としてJavaScriptに取って代わる予定です。

タイプスクリプト

JavaScriptの代わりとして自分自身を位置付ける別の言語。 Delphi、C#、TurboPascalの作者である有名なAndersHejlsbergが、新しい言語の開発者になりました。 タイプスクリプトは 開いた舌 Javaスクリプトとの下位互換性。 コンパイラはTypeScriptコードをJavaScriptに変換し、JavaScriptはブラウザによって実行されます。 JSとは異なり、新しい言語は、モジュールの接続だけでなく、オブジェクト指向プログラミングのすべての可能性をサポートします。 Type ScriptとJavaScriptの互換性により、既存のJavaScriptコードを、人気のあるJSライブラリを含む新しいTypeScriptプロジェクトで使用できます。 ジェネリックプログラミングパラダイムがサポートされています。

  • 翻訳

プログラミング言語を人気で分けると、3つの段階に分けられます。 最初の段階には、Java、JavaScript、Python、Ruby、PHP、C#、C ++、Objective-Cなどの主流の言語が含まれています。 主要な言語のいくつかは衰退しているかもしれませんが、仕事を簡単に見つけられるようにしたい場合は、それらの1つ以上を知っている方が良いでしょう。


第2層の言語は主流に侵入しようとしていますが、まだそれを達成していません。 強力なコミュニティを構築することでその価値を証明していますが、ほとんどの保守的なIT企業ではまだ使用されていません。 Scala、Go、Swift、Clojure、Haskellは、私が2番目の階層として分類する言語です。 一部の企業はこれらの言語を使用して 個別のサービスただし、広く使用されることはまれです(iOSの主要言語としてObjective-Cを追い越し始めているSwiftを除く)。 GoとSwiftは、今後2〜3年以内にTier2からTier1に移行する可能性が高くなります。


最初の段階のほとんどの言語は、その立場にしっかりと根付いています。 したがって、指導的立場から言語を失うことはかなりの時間を要し、2番目の階層の言語が最初の階層に侵入することは非常に困難です。


この記事の有望な言語は第3階層に属しており、それらはまだ始まったばかりです。 一部の言語は、人気を得ることなく何年もの間3番目の段階にありましたが、他の言語はわずか2、3年で登場しました。 たとえば、記事で説明する言語のように。

有望な言語:なぜ5つなのか?

議論される5つのプログラミング言語は非常に新しく(初めて耳にする可能性があります)、今後2〜3年で2番目の段階に突入する絶好のチャンスがあることは明らかです。 たぶん、いつかこれらの言語の1つが最初の段階の言語を混雑させることができるようになるでしょう。


これが、これらの5つの言語がこのリストに選ばれた理由です:


ElmはJavaScriptコミュニティで人気を集めており、主に関数型プログラミングを好む人々の間で人気が高まっています。 TypeScriptやDartと同様に、ElmはJavaScriptにトランスパイルされます。


Rustは、主にCおよびC ++を使用するニッチを対象としたシステムプログラミング言語です。 したがって、この言語の人気がWeb開発者の間で急速に成長しているのを見るのは驚くべきことです。 この事実は、言語がMozillaで作成されていることを知ったときに、より意味のあるものになります。Mozillaは、低レベルのコードを書くことを余儀なくされ、同時にPHP、Ruby、 PythonまたはJavaScript。 Rustは、2016年のStackOverflow開発者調査で「お気に入りのテクノロジー」カテゴリでも最高に選ばれました(つまり、ほとんどのユーザーがこの言語を使い続けたいと考えています)。


Kotlinは約5年前から存在していますが、本番環境に対応したバージョン1.0に到達したのは今年だけです。 Scala、Groovy、Clojure(JVMで最も人気があり成熟した(Javaを除く)3つの言語)の人気をまだ達成していないという事実にもかかわらず、他の多くのJVM言語よりも際立っており、準備ができているようですこのグループのリーダーの間でその場所を取ります... この言語は、JetBrains(人気のあるIntelliJ IDEA IDEの作成者)で生まれました。 そのため、開発者の生産性に重点を置いて設計されています。


Crystalは、経営幹部レベルのプログラムパフォーマンスをWeb開発者の高レベルの世界にもたらすことを望んでいるもう1つの言語です。 CrystalはRubyコミュニティをターゲットにしています。 その構文はRubyと似ており、場合によっては同じです。 すでに多数のRubyスタートアップが増え続けており、Crystalは、これらのアプリケーションのパフォーマンスを次のレベルに引き上げるのに役立つ重要な役割を果たすことができます。


ElixirもRubyエコシステムからインスピレーションを得ましたが、Cのようなメリットをもたらすのではなく、可用性が高く応答性の高いシステムの構築に重点を置いています。 批評家によると、Railsが問題を抱えているのは何か。 Elixirは、電気通信業界での25年の成功に基づいて確固たる評判を築いているErlangVMでこれらのメリットを実現しています。 フェニックス(ElixirのWebフレームワーク)は、大規模で繁栄しているエコシステムとともに、この言語にさらなる魅力を与えます。


次に、これら5つの言語のうち4つが人気のはしごを登る方法を見てください(StackOverflowとGitHubのデータに基づく):




これらの各言語は、情熱的なコミュニティと独自の週刊ニュースレターを誇っています。 将来に向けてエキサイティングな機会を持つ若い言語を学ぶことを考えている場合は、それぞれのエコシステムの経験豊富な愛好家やリーダーによって書かれた、これら5つの言語のそれぞれについての短いプレゼンテーションを読んでください。

エルム

Elmは、高性能のJavaScriptコードにコンパイルされるユーザビリティ指向の関数型プログラミング言語です。 JavaScriptとの組み合わせを含め、これを使用して作成できます ユーザーインターフェイスインタネットの中には。 JavaScriptに対するElmの主な利点は、信頼性、メンテナンスの容易さ、プログラミングの楽しみに重点を置いていることです。 より具体的に:

  • ランタイム例外なし: Elmコードには評判があります 実行時に例外をスローしない..。 「未定義は関数ではない」というわけではありません。
  • 伝説的な優雅なコンパイラ: Elmコンパイラはよく 賞賛競合他社の中で最も役立つバグレポート。 大規模なリファクタリングを行った後でも、「コンパイルすれば、通常は正常に機能する」というのが一般的な信念です。 これにより、大規模なElmプロジェクトは、相応のJSプロジェクトよりも保守がはるかに簡単になります。
  • セマンティックバージョニング: elm-packageは、セマンティックバージョンを自動的に適用します。 パッケージの作成者がメジャーバージョン番号を上げずにAPIを壊すような変更を加えようとすると、elm-packageはこれを検出し、公開を拒否します。 新しいバージョンパッケージ。 セマンティックバージョニングをこれほど確実に実施する有名なパッケージマネージャーは他にありません。
  • 高速で機能的: Elmは、突然変異や副作用がないことを保証する純粋関数型言語です。 これは、Elmコードに優れたスケーラビリティを提供するだけでなく、React、Angular、またはEmberよりも高速にアプリケーションUIをレンダリングするのにも役立ちます。
  • 強力なツール: elm-formatは、コミュニティ標準に従ってソースコードをフォーマットします。 コーディング規約をめぐる論争はもうありません。 エディターの「保存」ボタンを押すだけで、コードが美しく見えます。 elm-testには、ユニットテストとランダムテストの両方をサポートする「バッテリー」が付属しています。 elm-cssを使用すると、cssファイルにコンパイルするElmコードを記述できるため、アプリケーションとスタイルシートの間でコードを分割して、定数が同期しなくなることがないようにすることができます。

ElmコードはJavaScriptと相互作用することもできます。 つまり、JSコードに少量を注入することができ、車輪の再発明をしなくても巨大なJSエコシステムを使用できます。

Kotlin

Kotlinは、JVMとJavaScriptを対象とする静的に型付けされた言語です。 Kotlinは、ツールボックス(主にJavaで記述されている)を開発するための新しい言語を探していたJetBrainsの必要性から生まれました。 彼らが既存のコードベースを使用することを可能にすると同時に、Javaが引き起こした問題のいくつかを解決する何か。 そして、それは正確に書くときに発生するこれらの一般的な欠陥の解決策です ソフトウェア Kotlinのほとんどの特性を定義しました。

  • 簡潔:特定の構成を表現するために必要なボイラープレートコードの量を減らします。
  • 汎用性: Webを問わず、あらゆるタイプの産業上の利用可能性に適した言語を作成します。 モバイル開発、デスクトップまたはサーバーアプリケーション。
  • 安全: null参照例外などの問題に関連する一般的なエラーのいくつかを、言語自体で処理できるようにします。
  • インタラクション:言語が既存のJavaコードベース、ライブラリ、およびフレームワークと相互作用できるようにして、投資の結果を徐々に実装して活用できるようにします。
  • 楽器: JetBrainsはツールを作成し、多くの日常的なタスクを自動化して、より効率的で生産的な開発につながるという信念からツールを作成します。 したがって、言語は補助ツールの使用を簡単に許可する必要があります。

Kotlinは、これまでもこれからも実用的です。コードを記述し、それらの解決を支援しようとするときによく発生する一般的な問題を探します。 これは、次のようなさまざまな言語機能を介して赤い糸のように実行されます。

  • デフォルトではヌルセーフ: Kotlinタイプはデフォルトでnull不可能であり、迷惑なnull参照/ポインター例外を回避します。
  • ファーストクラスの代表団:クラスメンバーの機能を外部関数に委任する機能。これにより、構成の再利用と改善が容易になります。
  • 合意:表現力豊かなコードを記述できる一連の規則により、読みやすさを向上させ、リファクタリングを容易にする、強く型付けされたDSLへの道が開かれます。
    html(head(title(+ "Kotlinを使用したXMLエンコーディング"))body(p(+ "これはHTMLです")))

Kotlin 1.0は、実際のプロジェクトで5年以上の開発と広範なテストを行った後、2016年2月にリリースされました。 現在、Kotlinを使用しているJetBrains製品は10以上あります。 また、Amex、NBC Digital、Expedia、Gradleなどの企業でも使用されています。


受け取るには 追加情報 kotlinlang.orgにアクセス


このセクションは書かれました

1.プロジェクトのプログラミング言語を選択するときは、2つの側面から選択します。古い実績のあるツールを選択するか、新しい、美しく、機能的ですが、テストがほとんど行われていないため、信頼性の低い言語を選択します。 この状況で最も賢いことは何ですか? 各ソリューションのリスクとその対処方法は何ですか?

イゴール・ジルバーグ、SmartHead
ツールは、タスクの適切性と、選択したツールに精通した経験豊富なチームの存在に応じて選択する必要があります。 新しいツールを使用する際のリスクは、調査、概念実証の作成、および経験豊富なコンサルタントの関与によって最小限に抑えられます。 新しいテクノロジーは絶えず研究する必要がありますが、特定のタスクにより適している場合にのみ適用されます。

アレクサンダーマカルチュク、qb
ビジネスにとって、「美しい言語」の概念は存在しません。 テストされていない新しい言語に賭けることができるのは、顧客が感じることができる特別なUSPをプロジェクトに提供することが保証されている場合のみであり、最も重要なことは、彼らがその言語にお金を払いたいということです。 この条件が満たされた場合、新しい言語を選択できますが、それに関連するすべてのリスクを負う必要があります。

グリゴリーニコノフ、アクティスワンダーマン
もちろん、それはプロジェクトと言語自体の成熟度に依存します。 プロジェクトで許可されている場合、または言語の使用が前提条件であり、必要なサブジェクトライブラリが利用できる場合は、実験を許可することは十分に可能です。 リスクは明らかです。途中でつまずく可能性のある落とし穴です。 これらのリスクを最小限に抑えることも明らかです。可能であれば、プロジェクトを開始する前に調査を実施し、少なくともフォーラムまたはメーカーからの言語に対する積極的なサポートがあることを確認してください。

、ADV
この問題では、それはすべてプロジェクトのタイミングと予算に依存します。 両方が非常に限られている場合、研究は正当化されず、もたらす可能性があります 大きな問題、プロジェクトの完全な失敗まで。

アレクセイ・フョードロフ、「クラスメート」
答えは、プロジェクトの計画期間に大きく依存します。 これが迅速に実行する必要がある小さなカスタムメイドのプロジェクトである場合は、引き渡して忘れてください。そうすれば、好きなものを選択できます。 これが何年にもわたる大規模なプロジェクトである場合は、必要な数のスペシャリストを雇うことができる実証済みのテクノロジーを選択することをお勧めします。 お住まいの地域にこのテクノロジーまたはそのテクノロジーのスペシャリストが何人いるかを見積もるには、LinkedInやHeadHunterなどの合理的なサービスを使用するだけで十分です。 次に、非機能要件(負荷、セキュリティ、フォールトトレランスなど)を確認する必要があります。

2.言語を本番環境で使用できるようにし、使用する必要があることを保証するための重要な要素は何ですか?

イゴール・ジルバーグ、SmartHead
この世界では誰も何も保証を与えません。 私たちは経験と一般的なベストプラクティスに依存しています。

アレクサンダーマカルチュク、qb
特定の言語を使用することが有益で安全であることを示す3つの主要な機能があります。 第一に、この言語での「生きている」コミュニティの存在、第二に、成功した事例の存在、そして第三に、大規模ベンダーによる言語のサポートです。

グリゴリーニコノフ、アクティスワンダーマン
「成熟した」サブジェクトライブラリとフレームワークの存在、問題解決のアドバイスを提供するアクティブなインターネットコミュニティ、最終的なアプリケーションの安定性とパフォーマンスに関する否定的なレビューの欠如。

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
要因は、特定の言語のコミュニティ、実装されたプロジェクトの数、開発者の数などです。 新しい生の言語での製品リリースは、大きなサポートの問題を隠します。

アレクセイ・フョードロフ、「クラスメート」
正式な保証は、契約によってのみバックアップできます。 本格的なベンダー(Oracle、SAP、IBMなど)があり、そのテクノロジーが今後10年間サポートされることを保証し、このベンダーと適切なサポート契約が締結されている場合は、原則として、これはある種の保証と見なすことができます... 問題は、これは通常非常に高価であり、大規模ベンダーからのサポートの質は通常嫌なものであるということです。

したがって、近年、世界では別の慣行が採用されています-オープンソース。 オープンソースを備えたオープンソースツール(言語、フレームワーク、データベースなど)がある場合 ソースコード、これにより、このツールで突然バグが見つかった場合に、極端な場合には自分の手でこのバグを修正できることが保証されます。 私が今日のビジネスの鍵と考えるのは、オープンソースソリューションのこの特性です。

3.開発者または複数の開発者がプロ​​グラミング言語の変更を提案したが、彼らの情熱がテクノロジーに対する適切なビジネス要件によってサポートされていないことを示している場合、どのように行動しますか?

イゴール・ジルバーグ、SmartHead
開発者にはビジネス要件はありません。 ビジネスはそれらを提示します。 ただし、ビジネスは開発者が作成するコードの品質に依存します。 したがって、開発者がビジネス上の問題の解決に明らかに適していないテクノロジを使用したい場合は、開発者を説得するか、変更する必要があります。 適切で経験豊富な開発者は、ビジネス要件を理解し、それらに最も適切なソリューションを適用することができます。 そんな問題はありませんでした。 私たちの実践では、逆のことがより頻繁に発生します。顧客は、ビジネス要件を策定する代わりに、テクノロジーの選択に影響を与えます(多くの場合、顧客自身の要件の実装に悪影響を及ぼします)。

アレクサンダーマカルチュク、qb
新しい言語への移行が具体的な議論によってサポートされておらず、プロジェクトに重大な利点を約束しない場合、それは必要ありません。 しかし、もちろん、開発者はこれを説明して、チームが自分たちの話を聞いていないという印象を受けないようにする必要があります。

グリゴリーニコノフ、アクティスワンダーマン
保守的なポリシーを遵守し、正当な理由なしに言語を変更しないでください。 新しい言語を試すための別のプロジェクトが常にあります。

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
内部プロジェクトの場合、またはチームをトレーニングするために作成されている場合にのみ、開発者に途中で会うことができます。 この場合、失敗のリスクは小さく、失敗した場合には、将来に役立つ経験がもたらされます。 そうでなければ、ビジネスは開発者の完璧主義を評価しません。

アレクセイ・フョードロフ、「クラスメート」
まず、言語を変更するという考えの根拠は何であるかを尋ねる必要があります。 それは何を与えるでしょうか? 長所と短所は何ですか? そのような移行のコストと時間枠はどのくらいですか? リスクは何ですか?

あなたが受け取った答えがビジネスの観点からあなたに合っているなら、先に進んでください。 満足できない場合は、開発者に拒否する理由を伝えるようにする必要があります。

4.ある言語から別の言語に切り替えるコストはいつ価値がありますか?

イゴール・ジルバーグ、SmartHead
プロジェクトのコンテキスト外で、プラットフォーム変更のコストと関連するメリットを見積もることは不可能です。 このような決定は、特定のプロジェクトの枠組み内での意図的なアプローチに基づいてのみ行うことができ、「普遍的な」意見や規則に基づくことはできません。

アレクサンダーマカルチュク、qb
プロジェクトに新しいUSPが登場し、製品の競争力が高まるため、これが直接的および間接的な具体的な利益を伴う場合。

グリゴリーニコノフ、アクティスワンダーマン
新しい言語を使用することで、アプリケーションの設計、開発、テストから実装、そして言語と言語の特性によるその後の更新と改善まで、サブジェクト領域のライフチェーン全体を大幅に最適化できる場合その周りの生態系。

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
言語サポートが廃止されると同時に、市場に出回っているスペシャリストの数はゼロになる傾向があります。 または、テクノロジーを保持する能力がないまま古いチームを完全に失った場合。 言語からの利益がそれを切り替えるコストよりも大きい場合。

アレクセイ・フョードロフ、「クラスメート」
あなたとあなたの同僚が上記の質問に明確な答えを持っているとき。

5.特定のタスクでの言語の使用には確立された部門があると思いますか? もしそうなら、あなたはそれをどのくらい正確に見ていますか? 状況を変えて開発者の大多数を引き継ぐ言語が出現する可能性がありますか、それともすでに存在していますか?

イゴール・ジルバーグ、SmartHead
もちろん、(言語ではなく)さまざまなプラットフォームの典型的な使用法がいくつかあります。 たとえば、比較的大規模なビジネスアプリケーションまたはサービス用のJavaおよび.NET。 マルチスレッドとメッセージングのためのNode.js。 すべてを列挙することはできません。 ただし、これらの境界は非常にぼやけており、地域によっても異なります。 たとえば、米国では、プラットフォームの使用、「ファッション」、および一般的なアプリケーションの経験が、私たちのものとはわずかに異なります。

アレクサンダーマカルチュク、qb
一方で、アプリケーションごとに言語の確立された区分がありますが、他方では、地域およびコストの要因が非常に重要です:テクノロジー、サポートなどを入力するコスト。 新しい言語の出現に関して、ここで次のことに注意する必要があります。 過去数年間で、コミュニケーションのレベルは大幅に向上し、プログラミング言語は基本的に同じです。 おそらく、まったく新しい開発技術を必要とするのは、通信におけるさらなる革命です。

グリゴリーニコノフ、アクティスワンダーマン
原則として、そのような区分があります:CとC ++は伝統的に低レベルの開発に使用され、JavaとC#はビジネスロジックから モバイルアプリケーション..。 Python、Ruby、およびPHPは、主にWeb開発、ブラウザーアプリケーションのJavaScriptに重点を置いています。 言語やフレームワークのファッションが時々変わるものの、この分野での劇的な変化は可能ではないと思います-たとえば、今、Go言語が人気を博し始めています。

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
はい。 いくつかのものはでよりよく実装されています 異なる言語作業の速度と使いやすさにより、たとえば、言語の「遅さ」によるphpプロジェクトでは、ノードでチャットを実装したり、Javaでアグリゲーターを実装したりできます。結果はより良くなります。

毎年、新しい言語はそれぞれ「最高」の栄誉を受け、開発者を引き付けますが、これまでのところ、おそらく、実績のある言語の位置は揺るぎないものです。 将来的には、すべてが可能になります。

アレクセイ・フョードロフ、「クラスメート」
私たちが知っている最新のプログラミング言語のほとんどは多機能です。つまり、非常に異なる決定を下すことができます。

新しい言語に関しては、そうです、そのような言語が現れるかもしれませんが、業界のかなり強い慣性のために、今後5年間で誰かがJavaとC / C ++を台座から押し出すとは思いません。 ある種の「馬」を選ぶなら、JavaScriptを使います。 今日、JavaScriptに関連するすべての分野で業界が驚異的な成長を遂げています。 フレームワークは、雨の後、きのこのように生まれます。 このテクノロジーをめぐるインターネットの誇大宣伝は巨大です。 これがどこにつながるのか見てみましょう。

6.プログラマーはDevOpsである必要がありますか(プログラマーとシステム管理者のスキルを持っている必要がありますか)? ほとんどのプログラマーが能力開発を拒否し、この分野で責任を負うという事実をどうするか?

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
環境をセットアップするために、彼らは通常、システム管理者のサービスを使用します。 しかし、おそらく、コードを書く人は、与えられたコードを最適に実行するためにサイトをセットアップできるはずです。 これにより、時間とコストを節約できます。

7.プロジェクトでマイクロサービスを使用する必要がありますか?

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
明確な答えはありませんが、私たちの答えはイエスです。 もちろん、それらは多くの問題を追加する可能性がありますが、多くの問題を解決するのにも役立ちます。 たとえば、マイクロサービスのおかげで、アプリケーションのさまざまな部分をさまざまなプログラミング言語で記述したり、アプリケーションのロードされた部分をスケーリングしたりすることができます。

8.開発者は、さまざまな最新のWebテクノロジーおよび言語を使用できる必要がありますか?

アレクセイ・ペルシアノフ、ミハイル・パルフェニュク、ADV
近年、フロントエンドは大きな飛躍を遂げましたが、サーバーサイド言語では開発はそれほど目立ちません。 もちろん、開発者は関連分野の基本を知っている必要がありますが、サーバー側の言語の第一人者になることは不可能であり、クライアント側の言語では、誰もが自分のことをし、その分野で真の専門家でなければなりません。