プログラミング言語 – ウィキペディア

before-content-x4

プログラミング言語C ++のプログラムのソーステキスト。

プログラミング言語のスクラッチにあるプログラムのソーステキスト。

プログラミング言語 データ構造とアルゴリズムの定式化のための正式な言語です。 H.コンピューターが実行できるコンピューティング規制の。 [初め] それらは通常、許可された(テキスト)パターンからの段階的な指示で構成されています。 構文

after-content-x4

最初のプログラミング言語はまだそれぞれのコンピューターのプロパティに直接調整されていましたが、今日は通常、マシンに依存しない問題指向または(一般的な)より高いプログラミング言語があります [2] したがって、人間に対してより理解しやすい表現を可能にします。これらの言語で記述されたプログラムは、自動的に機械言語に翻訳できます。これは、プロセッサが直接実行できます。視覚的なプログラミング言語もますます使用されているため、プログラミング言語へのアクセスが容易になります。

宣言的なプログラミング言語の場合、実行アルゴリズムは事前に設定されており、ソーステキストでは策定/説明されていませんが、その初期値と条件のみが決定され、結果が満たさなければならないルールが決定されます。

概要

コンセプト「プログラミング言語」

プログラムの指示は通常、単純なテキストエディターを使用して生成されます。それらはソーステキスト(またはソースコード)と呼ばれます。コンピューターで実行するには、ソーステキストをこのコンピューター(タイプ)の機械言語に翻訳する必要があります。より高いプログラミング言語とアセンブラー言語の場合、これは人々にとって読むのが難しいバイナリコードです。プログラミングが機械言語で話されている場合、アセンブラー言語は通常、今日の意味です。

after-content-x4

マシン言語の翻訳は、インタープリターまたはJITコンパイラによるコンパイラまたはAT期間による実行の前に実行できます。多くの場合、両方のバリアントの組み合わせが選択され、プログラムのソーステキストが最初に中間コードに変換され、その後、ランタイム環境内のマシンコードに転送されます。この原則には、同じ中間コードを異なるプラットフォームで実行できるという利点があります。このような中間コードの例は、Java-bytecodeと一般的な中間言語です。

通常、プログラミング言語は少なくとも提供されます

通常、これらの基本的な機能からより高い機能を作成し、ライブラリとしてそれらを魅了することが可能です。そこからより高いまたは問題指向の言語に到達することは、もはや大きなステップではありません。そのため、さまざまなアプリケーションエリア向けに多数の特殊言語がありました。これにより、プログラマーの効率性とプログラムの移植性が向上します。これは、生成されるプログラムの処理速度が減少し、言語の強力が減少します。言語が高くて便利なほど、プログラマーは意図したパスを取ることになります。

言語は異なります – 一部は「成長」し、ますます使用されています。何度も何度も言語は、多目的でブロードバンド言語であるという主張で設計されており、多くの場合、わずかな成功を収めています(PL/1、ADA、Algol 68)。さまざまなサービスは、異なる言語の拡散を測定しようとします。たとえば、Tiobe Index、Pypl [3] Redmonkからの分析。 [4]

パノラマ

コンピューターサイエンス向けのプログラミング言語の重要性は、さまざまな形式とアプリケーションの幅でも表現されています。

口語的には、プログラミング言語も他の分野で話されています。ただし、後続の言語は次のとおりです いいえ アルゴリズムと一般的なデータ処理の説明、つまり、まったく目的のプログラミング言語はありません。

そのような言語はに該当します ドメイン特異言語。

命令カテゴリ

プログラミング言語の指示(例を参照)は、次のグループに従って分類できます。

  • コマンドの入力と出力 – キーボード、ファイル、または他のソースからデータを読み取ります。または、特定の出力デバイス(画面、ファイル、プリンターなど)で//介して発行できます。
  • 割り当てと計算 – データコンテンツを変更または作成します。
  • 制御フロー命令:決定 – 作成手順(分岐命令)、反復手順、ジャンプ手順は、利用可能なデータに基づいて、次に実行されるコマンドを決定します。
  • 宣言 – ほぼ自由に選択可能な名前の下で変数またはデータ構造のための保管スペースを予約します。後でこの名前を介して対処できます。
  • 「プログラム外部」のサブルーチン/システム関数(「読み取り」など)や機能モジュールなど、他のプログラミング言語からの表示も表示されます。

翻訳者

特定のプログラミング言語で作成されたプログラムを実行できるようにするには、ソースコードの代わりにマシンコマンドの同等の結果を実行する必要があります。ソースコードは文字列(「a = b + 100 * c」など)で構成されているため、これが必要です。プロセッサは「理解」していません。

開発は、コンピューターテクノロジーの歴史とソフトウェアテクノロジーの歴史にジャンプし、おそらくいくつかの段階でマシンコードを作成するためのさまざまなツールをもたらしました。これらは、たとえば、コンパイラー、通訳、プレキサル担当者、左翼などと呼ばれます。

コンピューターが同等のマシンコードにどのように登場するかのタイプと時間に関して、2つの原則を区別できます。

  • aになります 全体としてのプログラムテキスト 「翻訳」、つまり、ソーステキストからマシンプログラムを作成した場合、翻訳メカニズムに関連するコンパイラについて話します。コンパイラ自体は、プログラムソースコードをデータ入力として読み取り、マシンコード(オブジェクトコード、exeファイル、「実行可能ファイル」など)またはデータ出力として中間コードを提供するプログラムです。
  • プログラムテキストに依存している場合 実行中 対応するマシンコードブロックが実行され、解釈された言語について話します。このプログラムは、ランタイム環境(時代遅れのJVMなど)で解釈され、プログラムコマンドに応じて、対応するマシンコマンドブロックが実行されます。

別のものもあります 混合バリアント

  • 「Just-in-Time Compilation」の場合、プログラムテキストは各プログラムの前で再び翻訳されます。必要に応じて、個々のプログラムセクションは(解釈)プログラム中にのみコンパイルされます。
  • 場合によっては、コンパイラはまだ実行可能ではないプログラムコードを作成します。これは、後続のシステムプログラムによって実行可能なマシンコードに変換されます。ここでは、「プラットフォームに依存しない中間コード」(たとえば、ソフトウェア分布の一部として)および「プラットフォームバウンドオブジェクトコード」(他のモジュールと一緒に、実行可能なコードを作成するZ。T.Ladedodul、結び付けられています)の概念です。
  • プログラミング言語では意図されていない特別な構文コンストラクト(意思決定テーブルなど)は、ソースコードに挿入された選択したプログラミング言語に処理および挿入できます。

翻訳を制御するために、ソーステキストには、プログラミング言語の指示に加えて、追加の特別なコンパイラ命令を含めることができます。複雑な翻訳プロセスは、プロジェクトの位置プロセスとその中に設定されたパラメーターによって特定のプログラミング言語/開発環境を使用する場合に制御されます。

プログラミング言語の歴史的な歴史には、電気通信技術(MORSEコード)および制御マシン(JacquardWebstuhl)で開発された多数の表記を含めることができます。次に、彼らのさらなる開発に過ぎなかった最初のコンピューターのアセンブラー言語。理論的な側面から、これにはアルゴリズムの概念の多くの正確さが含まれます。λ計算が最も重要です。 ZensePlankalkülもここに属しています。 ミニマリスト 理論家のアプローチ(基本的な構成要素としてビット)。

最初のフェーズでは、1950年代半ばから無数の言語が作成されました [5] 与えられたタスクと手段に実際に基づいた開発。 Algol 60(1958–1963)の開発以来、翻訳者構造のタスクは実際のコンピューターサイエンスで確立されており、最初は構文(認識、パーサー)に焦点を当てて集中的に処理されてきました。複合材料、キャラクターチェーン、ポインターなどの拡張データ型が実際のページに導入されました(一貫してアルゴル68)。

1950年代には、さらに最初の3つが実際に使用されたより高いプログラミング言語が米国で開発されました。これらは、命令的および宣言的な機能的アプローチの両方を追求しました。

Algol 60の開発は、手続き上のプログラミングのような多くの新しい概念の肥沃な段階を告げました。新しいプログラミング言語の必要性は、コンピューターテクノロジーの迅速な進捗により増加しました。この段階では、プログラミング言語の基本とCがC

1980年からの連続時に、新しく開発された論理プログラミング言語は、オブジェクト指向のプログラミングの形での従来の概念のさらなる開発に対して勝つことはできませんでした。 1990年代に速く成長していたインターネットは、たとえば、Webサーバーアプリケーションの開発のための新しいスクリプト言語の形で、その賛辞を要求しました。

最近数十年の概念の統合は現在進行中です。たとえば、仮想マシンの形式でのコードセキュリティの側面が考慮されます。より新しい統合された視覚開発環境には、時間とコストの労力が大幅に少なくなります。通常、操作表面は視覚的に設計でき、クリックするとコードフラグメントに直接到達できます。他のプログラムパーツやライブラリへのドキュメントは直接見ることができますが、ほとんどがあります 見上げる – 執筆中にまだ見つけられる機能性この時点で許可され、対応する提案(本物)を作成します。

現在確立されているオブジェクト指向プログラミングに加えて、モデル駆動型アーキテクチャは、構文的および意味的に指定されたモデルからプログラムが生成されるソフトウェア開発を改善するもう1つのアプローチです。同時に、これらの手法は、よりマニュアルの個別の芸術から工業的に組織化されたプロセスへの移行を示しています。

言語世代

あなたは言語としてのマシン、アセンブラー、およびより高いプログラミング言語を持っています 最初から第三世代 専用;また、同時ハードウェア世代に類似しています。として 第4世代 プログラムジェネレーターと援助プログラムを使用してさまざまなシステムが宣伝されています。 B.スクリーンメーカーのデザイン( 画面画家 )装備されていました。 最後に、第5世代の言語は1980年代にあるはずです 第5世代コンピューティング 同時プロログセイン。

プログラミングパラダイム

プログラミング言語は、いわゆるプログラミングパラダイムとして、プログラミング言語開発の進化コースで形成されたカテゴリに分けることができます。基本的に、構造化された、命令的、宣言的、オブジェクト指向プログラミングのパラダイムは、他の下位区分にあります。ただし、プログラミング言語はいくつかのパラダイムに従うこともできます。つまり、いくつかのパラダイムの概念的特性をサポートします。

構造化されたプログラミング言語

構造化されたプログラミングは、ソフトウェアの危機により、1970年代初頭にも人気がありました。これには、プログラムのサブプログラム(手続き上のプログラミング)への内訳と、3つの基本制御構造の命令、分岐および繰り返しに対する制限が含まれています。

命令的なプログラミング言語

命令的なプログラミング言語で書かれたプログラムは、指示(ラテン語)で構成されています。 ルール =コマンド)誰が説明します、 どうやって このプログラムは、結果を作成します(たとえば、結果、研削、乗算など)。

宣言的なプログラミング言語

宣言的なプログラミング言語は、正確に逆のアプローチに従います。プログラマーは、プログラムのエディション( だった ) 会わなければいけない。結果が具体的な用語で生成される方法は、たとえば通訳によって翻訳で決定されます。 1つの例は、データベース需要言語SQLです。

プログラムは、必ずしも指示のリストを含める必要はありません。代わりに、たとえば、グラフィックプログラミングアプローチは、自動化で使用されるステップ7プラットフォームのように使用できます。

定式化された条件のタイプは、宣言的なプログラミング言語を数学的論理を使用する論理プログラミング言語と数学的関数を使用する機能的プログラミング言語に分割します。

オブジェクト指向のプログラミング言語

プロセスが最初に焦点を合わせ(「計算したい」)、データが「何らかの形でスナップされた」という手続き上のプログラミングとは対照的に、オブジェクト指向のプログラミングは最初にデータに焦点を当てています。次に、どの属性/データが記述されていますか(→オブジェクトクラス)?メソッドはデータに割り当てられ、両方ともオブジェクト/オブジェクトクラスにまとめられます。
オブジェクトの向きは、結果として得られるプログラムの複雑さを減らし、それらをより再利用可能にし、通常、純粋に手続き的プログラミングの場合よりも現実をより正確に描写します。

オブジェクトオリエンテーションは次のパラダイムを提供します。 [6]

データカプセル
実装の詳細を非表示:オブジェクトは、ユーザーに定義された量のオプション(メソッド)を提供し、変更、影響、影響、または情報を受信します。隠されている補助ルーチンまたは条件メモリは、(直接)アクセスすることはできません。
相続、専門化、一般化
継承とは、派生クラスに基本クラスの方法と属性もあることを簡素化することを意味します。 遺伝性の 。さらに、追加の属性とプロパティを持ち、アクションの追加オプションを提供できます。派生クラスは、基本クラスの「特別なケース」です。
逆に、複数のクラスの同じ機能を共通の基本クラスに「外注」することができます。コードを保存し、待機しやすく、必要に応じて他の特別なクラスに再利用可能なコードを保存することができます。この基本クラスから簡単に継承できます。基本クラスはこれについて説明しています 一般的な行動 すべての派生(特別)クラス。
Polymorphie
特別なクラスの財産は、常に基本クラスのメンバーと見なすことができます。その結果、派生クラスのオブジェクトは、ベースクラスのオブジェクトが吸収できる変数に保存することもできます。これは、継承のためにベースクラスのメソッドと属性を提供するためです。

Typsystem

変数は、値を吸収できるメモリに提供される名前を使用します。値のタイプを決定するには、データ型を変数の多くのプログラミング言語で割り当てる必要があります。頻繁なデータ型は、フルとフローティングのコンマ番号または文字チェーンです。

タイプされた言語とタイプレス言語を区別します。型言語(C ++またはJavaなど)では、変数のコンテンツはデータ型によって定義されます。フルおよびスライドメイドの数値には異なるデータ型があり、値の範囲が異なります。サインレスまたは署名することができます。上昇した価値領域の後、これらは、たとえば、短い、整数、または長いです。たとえば、スライディングコンマ番号のデータ型はフロートまたはダブルです。個々の文字は、charデータ型に保存できます。文字列データ型は、文字列チェーンで使用できます。

タイプされた言語は、タイムチェックと区別できます。プログラムの翻訳でタイプチェックが行われる場合、静的タイピングについて話します。タイプテストが実行時に行われる場合、動的タイピングについて話します。プログラミング言語が学期中に最新のTypflesterを認識している場合、それはタイプ – プルーフと呼ばれます。

静的タイプテストの場合、プログラマはそれを回避しようとします。または完全に強制されていません(現在のアートの最新の状態では、すべての静的言語でタイプのタイプを作成する方法が必要です。動的タイプテストの言語では、いくつかのDYPFエラーは手遅れの場合にのみ見つかります。変数のデータ型を変更する場合、変換のための明示的なコマンドが必要です。

タイプされた言語とは対照的に、tipeless Languages(たとえばJavaScriptやProlog)には、差別化されたデータ型がありません。変数のデータ型は、この用語でのみ決定されます。変数に異なるタイプの値が割り当てられている場合、変数は新しいタイプに変換されます。タイプのない言語は、多くの場合、すべてのユニットを文字列として扱い、複合データの一般リストを知っています。

データ型を決定することにより、2つの目的が主に従います。

  • 記述タイプの情報は、プログラミングを促進し、表記を緩和します。インデックスを持つフィールドにアクセスする場合、要求された値が配置されているストレージポイントは、使用するデータ型に応じて計算できます。
  • 規範的なタイプ情報は、特定の操作を除外します。たとえば、フィールドの境界のコンプライアンスをチェックして、フィールドの境界を越えてアクセスを防ぐことができます。

プログラミング言語MLの安全なタイプシステムは、その中でプログラムされたエビデンスシステム(LCF、HOL、イザベル)の正しさの基礎を形成します。同様に、現在、オペレーティングシステムの安全性を確保しようとしています。 [7] 最後に、さまざまなタイプが識別子の一般的な過負荷を可能にします。 Stracheyによると、タイプシステムはプログラミング言語の定義の焦点である必要があります。

データの定義は、一般に、データストレージと必要な操作の特定の仕様を指定することにより実行されます。この仕様により、操作の一般的な動作が決定されるため、データ構造の特定の実装から抽象化します(宣言も参照)。

もちろん、でできます ファーストクラスの市民 ファーストクラスの市民 -FCCS)プログラミング言語の – つまり、直接使用できるデータの形式は、どのパラダイムが言語に従うかを認識しています。 Java zで。 B.はオブジェクトFCCであり、LispyにはすべてのプログラムFCCSがあり、Perlには文字列、配列、ハッシュがあります。データの構造は、構文ルールにも従います。変数を使用すると、データに簡単にアクセスし、変数の参照と日付のデュアル文字を利用できます。データの文字チェーンを(セマンティック)意味で使用できるようにするには、この意味をデータ型を指定することで指定する必要があります。通常、タイプシステムには、新しいタイプを調整するオプションもあります。 LISPは、概念的なメイン構造としてリストを使用します。このプログラムは、他のリストを変更するコマンドのリストでもあります。 Forthは、スタックとスタック操作を主要な概念構造として使用し、用語で拡張できる定義の辞書を使用し、ほとんどの実装ではタイプのテストをまったく実行しません。

その他

これは、テキストでプログラミング言語の人気のある紹介です こんにちは世界 (またはドイツ語の「Hello World」)画面または別の出力デバイスに出力します(Hello-Weltプログラムを参照)。したがって、Hello Worldプログラムと独自のWebサイトのリストがあります。 [8] さまざまなプログラミング言語の模範的な実装を比較しました。

参照してください

文学

  • フリードリッヒ・L・バウアー、ハンス・ウェスナー: アルゴリズム言語とプログラム開発 。 2.改良版。スプリンガー、ベルリンu。 1984、ISBN 3-540-12962-6。
  • ピーター・A・ヘニング、ホルガー・ヴォーゲルサン: ハンドブックプログラミング言語。学習と検索のためのソフトウェア開発 。ハンサー、ミュンヘン2007、ISBN 978-3-446-40558-5。
  • ケネス・C・ラウドン: プログラミング言語:基本、概念、デザイン 。インターナット。 Thomson Publ。、Bonn/ Albany u。 a。 1994、ISBN 3-929821-03-6。
  • ジョン・C・レイノルズ: プログラミング言語の理論 。ケンブリッジ大学プレス、ケンブリッジ1998、ISBN 0-521-59414-6。
  • ロバート・ハーパー: プログラミング言語の実用的な基盤 。ケンブリッジ大学プレス、ケンブリッジ2016、ISBN 978-1-107-15030-0。
  • ピーター・ヴァン・ロイ、セフ・デシンズ: コンピュータープログラミングの概念、テクニック、モデル 。 Press、Cambridge 2004、ISBN 0-262-22069-5。
  • マイケル・L・スコット: プログラミング言語のプラグマティクス 。第2版​​。 Elsevier、Morgan Kaufmann、Amsterdam 2006、ISBN 0-12-63951-1。

Webリンク

個別に

  1. プログラミング言語 dud 、2019;文字通り、「電子データ処理のためのプログラム(4)の定式化に使用される単語と記号のシステム」があります。参照してください Duden Computer Science 、ISBN 3-411-05232-5
  2. …参照してください プラットホーム 独立性(特に、コンピューティング作業に関する製造業者の独立性の意味で)も同様に 抽象化(コンピューターサイエンス)
  3. pypl
  4. redmonk
  5. 1965年頃、1700年に数えられました、Iswimを参照してください。
  6. ピーター・A・ヘニング、ホルガー・ヴォーゲルサン: ペーパーバックプログラミング言語 。 Carl Hanser Verlag、Leipzig 2007のスペシャリストブック出版社、ISBN 978-3-446-40744-2。
  7. 見る。 言語ベースのシステム – 例えばB.プログラミング言語に基づく特異点 歌う # JX Javaの場合、言語のCoyotos BITC
  8. 言語をプログラミングした後のハローワールドプログラムのリスト
after-content-x4