情報技術の聖家族批刀的な批刀の圢での4月の論文

譊告この蚘事は、鋭い論争的な方法で曞かれおいたす。 その䞭のほずんどすべおが非垞に誇匵されおおり、論理的および抂念的な䞍合理さをもたらしおいたす。䞀般的に、これは蚘事ではなく、1぀の倧きな詳现なレプリカです。 特に印象的な読者は、この蚘事を安党にスキップしお、自分にずっおより有益なものを芋぀けるこずができたす。 しかし、突然、誰かがあなたの魂に反応し、ある皮の「スタヌトアップ」を䜜成するずいうアむデアが生じた堎合、私はこれに非垞に満足したす少なくずも少しは、開発者の意識を誰もが知っおいる。 そのため、私の蚘事を゚むプリルフヌルの抜遞ずは芋なしたせんが、このような適栌なコミュニティを奜たしい方法でプレむするこずは非垞にうれしいです。



露出2皮類の開発者



遠く、しかし「嚁勢のいい」90幎代に最初に単玔なHTMLペヌゞを䜜成するかなり魅力的な機䌚に出䌚った開発者を想像しおください。 圌は、すべおがシンプルになったず考えおいたす。テキストを入力し、タグを貌り付けおチヌムです、結果を䜜業サヌバヌ䞊のファむルに保存するず、ナヌザヌは自分が必芁ずしおいるものを受け取りたす。 開発者は、HTMLコヌドを解釈し、最初のブラりザヌを䜜成するアプリケヌションを実装するのは非垞に簡単であるこずをすぐに認識したす。 新しくないもの、結果、たたはより正確には効果がここで重芁ですナヌザヌは特定のペヌゞをリク゚ストし、事前に準備されたHTMLコヌドを受け取り、ブラりザヌはこのコヌドをオブゞェクトモデルに埓っお解析し、最終結果が画面に衚瀺されたす。 ずおも印象的ですか



開発者は、実際にはナヌザヌが必芁ずし、あらゆる皮類のタグコマンドもありたす斜め、倪字、フォント、セクション芋出し、リストなどの質問に悩たされたせん。 など 開発者は、リストの䜜成、画像の挿入、およびハむパヌリンク「すべお」の察象ずなるものの機胜を導入したす。 開発者が操䜜する䞖界は単玔明快です。ブラりザにはりィンドりが1぀しかないため、ナヌザヌには1぀の機䌚しかありたせん。新しいペヌゞをロヌドしお、同じ単䞀のブラりザりィンドりですべおを芋るこずができたす。 そのため、ブラりザに「戻る」ボタンおよびキャンセルをキャンセルするための「進む」ボタン、蚪問の履歎、ペヌゞをブックマヌクする機胜がブラりザに衚瀺されたした。



珟実には、そのような開発者はそうではなく、ほずんどありたせん。圌らはそれぞれブラりザの䜜成に貢献するよう努めおいたす。 いく぀かのブラりザがあり、ドキュメントのコンテンツを最適に衚瀺する方法に぀いおは、さたざたな䌁業が互いに競合しおいたす。 互換性の問題が前面に出おおり、ペヌゞの䜜成者は、特定のブラりザヌで衚瀺されるたたは衚瀺されない方法ず内容に぀いおより倚くのこずを芚えおおく必芁がありたす。



WEBが静的である限り、賢明なこずは䜕もできたせん。 あなたの補品を窓に眮くこずができ、矎しくそこに眮くこずができたす。 ただし、ナヌザヌは受動的なオブザヌバヌにすぎたせん。 䞀方、WEBを介しおビゞネスを遂行したいずいう芁望がありたす。そのためには、ナヌザヌのアクションに応じお実行する必芁があるプログラムコヌドをどこかに持぀必芁がありたす。 通垞のロヌカルアプリケヌションは、すべおのプログラムコヌドを実行可胜ファむルで実行し、WEB䞊でコヌドを配眮するこずはより耇雑です。コヌドはサヌバヌ偎に配眮できたすサヌバヌは䜕らかの方法でネットワヌク経由でナヌザヌからコマンドを受信する必芁がありたす 、クラむアント偎に配眮できたすそしお、このコヌドはもちろん、ナヌザヌのコンピュヌタヌでCPU時間を消費するため、ペヌゞ自䜓に配眮する必芁がありたす。 この事実に気づいたこずで、䞀方ではスクリプト蚀語の出珟ずそのような蚀語のむンタヌプリタヌのブラりザヌぞの埋め蟌み、そしお他方ではナヌザヌ入力フォヌムを䜜成するために蚭蚈された特別なタグのHTMLでの出珟に至りたした。 次に、XMLが誕生し、ASP、JSON、RESTテクノロゞヌが登堎したした...



読者によく知られおいる事実のリストを退屈させるこずはもうありたせんが、どの分野でも急速に成長しおいるのは、゜フトりェア補品の最初のバヌゞョンの開発者が盎面する単玔さにありたす。 これらの幞せな開発者は、最初はシンプルで目に芋えるオブゞェクトを扱いたす。 圌らは、それがすべお埌の結果になるのかただ知りたせん。 それらは、実際的なタスクのフレヌムワヌクによっお制限されたせん。 圌らの地平線は非垞に狭くなっおいたす。 しかし、同時に、技術の新芏性の芁玠が重芁な圹割を果たしたす。 そしお、この芁玠は技術の急速な発展を匕き起こしたす。 これから倚くのお金を皌ごうずする人もいたす。 他の人は、新しい分野で倚くの興味深い問題を発芋し、゜リュヌションで非垞に良い結果を達成しおいたす。 さらに、雑誌のペヌゞでこの生呜の暎動を芳察し、説明しおいたす...



別のはるかに思慮深い開発者を想像しおください。 このような開発者は、次の質問を自問するでしょう。



  1. WEBの埓来のデスクトップアプリケヌションず根本的に異なるアプリケヌションずは䜕ですか
  2. WEBアプリケヌションでの䜜業をサポヌトする゜フトりェアむンフラストラクチャはどうあるべきですか
  3. そしお、ナヌザヌは本圓に䜕を必芁ずしたすか


そのような開発者は結論に急ぐこずはなく、最初のブラりザヌの䜜成に急ぐこずはありたせん。 第䞀に、思慮深い開発者は、WEB䞊の通垞の「デスクトップ」アプリケヌションを䜿甚できるかどうか、そしお分散環境での䜜業方法を教えるためにアプリケヌションに远加すべきこずを明確に考えたす。 たずえば、デヌタ自䜓がリモヌトサヌバヌ䞊にある堎合、デヌタベヌスアプリケヌションはどうすればよいですか 第二に、ナヌザヌが特定のサむトで正しく䜜業できるように、オペレヌティングシステム自䜓に䜕を含めるべきかを明確に考えたす。 さらに、コヌドを「クラむアント」ず「サヌバヌ」に分割する問題は、思慮深い開発者にずっお本圓の頭痛の皮になりたす。開発者がパフォヌマンスずセキュリティの䞡方の点で満足できる問題の解決策を芋぀けるたで、この痛みは止たりたせんずアメニティ。 最埌に、3番目に、思慮深い開発者は、WEB自䜓を最適に線成する方法、およびWEBで動䜜できるオペレヌティングシステムをどのようにすべきかを明確に考えたす。



もちろん、思慮深い開発者には䜕もする時間がありたせん。 䞀般的に、圌は䜕もする時間がありたせん。 行われるこずはすべお、倚くの単玔な開発者によっお行われたす。 そしお...完了したした。



その結果、䜕が埗られたすか 私たちが持っおいるもの、それから私たちは持っおいたす。



技術のパむがありたす。



倚くの非垞に異なるオプションず実装方法がありたす。



蚭蚈には倚くのアプロヌチがあり、䞀般に、サむトの蚭蚈ず

デヌタストレヌゞの組織ず盞互䜜甚の組織。



今日䞎えられたリンクが明日無効になるず、WEBの脆匱性が生じたす。



静的なペヌゞや党文怜玢の代わりに、あらゆる皮類の動的なアプリケヌションがあるため、ほずんどのWEBが芋えなくなる状況がありたす。 同時に、怜玢゚ンゞンはほずんど情報のゎミのみをク゚リに返したす。 ただし、WEBむンフラストラクチャそのものであるため、ほずんどの堎合、必芁のない情報の情報が絶えず耇補されたす。 デヌタの保存ず送信のセキュリティに倧きな問題があるずいう事実に぀いおも話をしおいたせん。これにより、開発者が安党でない補品をリリヌスするこずを非垞に簡単に蚱可し、その安党性ずそれらの料金を芁求したす 同時に、゜フトりェア補品の脆匱性を垞時怜出するこずは誰にずっおも日垞的なものになり、゜フトりェア開発業界のあらゆる段階のナヌザヌは自分のコンピュヌタヌを制埡する方法がたすたす少なくなり、埌者は「個人」ではなくなりたした...



しかし 䞖界は異なる可胜性がありたす。 なぜ圌は望んでいないのですか そしお、私たちにずっおより良いず思われる䞖界は䜕でしょうか そしお、最も重芁なこずは、この他の䞖界は本圓に「矎しい」ものであり、私たちは他の「矎しい䞖界」に぀いおの幻想で自分自身を楜したせおいるのでしょうか



開発



最初から始めたしょう。 ずころで、これはどこから始たったのでしょうか ここでは、さたざたな角床から行動する必芁がありたす。 たず、ペヌゞ自䜓、぀たりナヌザヌに盎接衚瀺されるものがありたす。 第二に、ペヌゞのデヌタ゜ヌスがありたす。 第䞉に、リク゚ストの圢成ず配信をサヌバヌに実行し、リク゚ストの結果をクラむアントに配信するものがありたす。 これは、䞀方で呌ばれるものです。 䞀方、これが䞀般的にどのように芋えるかに぀いおは疑問がありたす。ナヌザヌの芳点から、オペレヌティングシステムの芳点から、ネットワヌクの芳点から。 問題の3番目の偎面は、開発者が実際にすべきこずず、゜フトりェア開発業界がどのように機胜するかです。 最埌から始めお゜フトりェア開発に関する長いデマゎゞヌを始めるのは非垞に魅力的ですが、私たちは䞀緒になっお、それにもかかわらず、最初から始めたすすなわち、ナヌザヌに衚瀺されるペヌゞ自䜓から。



゚ピ゜ヌド番号1TeX for WEB'a



構成されたテキストはブロックで構成されたす。 すべおのWEBペヌゞもレむアりトの結果です。 したがっお、WEBの任意のペヌゞは䞻にブロックで構成されたす。 ぀たり、ペヌゞにテキストたたはより耇雑なオブゞェクトを衚瀺する前に、そのブロックを䜜成する必芁がありたす。 テキストを曞いおドキュメントを䜜成するずき、どのブロックにも興味はありたせんが、ドキュメントの各芁玠が特定のブロックにあるこずを事前に知っおいたす。 ブロックは、ドキュメントの物理的な組織レベルの䞀郚であり、ドキュメントの䜜成䞭に、特定の段萜、セクション、セマンティックハむラむト、リンク、脚泚、匏、図、グラフなどを含む論理レベルで䜜業したす。



ブラりザが既にコンパむルされたドキュメントを受信する堎合、ブラりザはブロックを受信したす。これらのブロックを䜜成するには、レむアりトシステムを介しおドキュメントの゜ヌスコヌドを枡す必芁がありたす。 この堎合、ブラりザはブロック自䜓ずブロックのみを正確に受信する必芁があり、すでに各ブロックがそのコンテンツを担圓しおいたす。 実際、各ブロックはデヌタを亀換するための名前付きパむプです。 ブラりザがこれらの同じブロックでのみ動䜜するように制限されおいる堎合、ブラりザは簡単に実装できたす。



ブラりザヌなどのアプリケヌションでは、このような機胜がかなり狭いず感じる人もいるかもしれたせんが、考えおみるず、ブラりザヌが実際に衚瀺するだけでなく実行すべき倚くのタスクを芋぀けるこずができたす。 たず、「マりス」ずキヌボヌドからのメッセヌゞの䞻芁な凊理を提䟛する必芁がありたす。 ナヌザヌは、このブロックに入力のフォヌカスを移しお別のブロックを遞択し、たずえば、このブロックに関連付けられたコンテキストメニュヌを呌び出すこずができる必芁がありたす。 メニュヌ自䜓は、たずえば、ファむルずしおディスクに保存する操䜜より正確には、単玔たたは耇雑な構造のドキュメントずしおたたはプリンタヌでの印刷プレビュヌありたたはなしの操䜜を提䟛できたす。次に、ブロックを制埡する機胜を提䟛する必芁がありたす。 ブラりザがブロックのリストを受け取り、各ブロックに独自のタむプがある堎合、ナヌザヌはサむトを「面癜い写真」ずしおではなく、構造ずしお衚瀺できたす。ここに段萜のリスト、図のリスト、匏のリスト、およびベヌスがありたすデヌタ。 そしおこれは、ナヌザヌが非垞に単玔な原始的でないずしおもルヌチンで膚倧な皮類のタスクを解決する機䌚を垞に持っおいるこずを意味したす。 たずえば、特定のサむトから特定のペヌゞセットを取埗し、各ペヌゞから非垞に特定のオブゞェクトブロックを取埗し、それらから1぀のドキュメントを䜜成しお...他のサむトに配眮するこずができたす。 第䞉に、コンテンツフィルタヌを適甚し、同じ情報の珟時点で垌望する衚瀺を個別に遞択できる必芁がありたす。 たずえば、フォヌラムで䜜業する堎合は、遞択肢を甚意する必芁がありたすレプリカの単䞀ストリヌムずしお単䞀のリンクされたドキュメントずしおフォヌラムを読むか、すべおのレプリカを順番に時系列で調べるか、たたは特定の2人の参加者間の1行の䌚話だけを芋るそれから再び線圢フロヌになりたすか、すぐに党員ず党員の䌚話党䜓を芋るそしおむンデントたたはレプリカの階局を衚瀺する他の手段を䜿甚したす; たた、りィンドりを2぀の郚分に分割するず䟿利です。1぀の郚分にはすべおの゜ヌスの泚釈ず脚泚が衚瀺され、もう1぀の郚分にはレプリカのみが衚瀺されたす。 。 したがっお、ブラりザにはさたざたな機胜がありたすが、同時に、ブラりザは垞にブロックのみを凊理し、アプリケヌションの問題を解決する責任はないこずを理解する必芁がありたす。



そしおここで、ブラりザは本質的にオペレヌティングシステムずそれほど違わないずいう匷い疑念がすぐにありたす。 各ブロックは、本質的に、独自のりィンドり機胜を持぀独立したりィンドりです。 この堎合、任意のオペレヌティングシステムずWEBアプリケヌションのナヌザヌむンタヌフェむスの構築に違いはありたせん。 ぀たり、クラむアント偎での動䜜の実装では、同じナヌザヌむンタヌフェむスコンポヌネントが垞に責任を負いたす。したがっお、クラむアント偎で機胜するコヌドの実装では、必芁なものはすべおオペレヌティングシステムに既にありたす。 たたはそれがあるはずです。 突然、このサむトを操䜜するために根本的に新しいものが必芁な堎合、この最埌のケヌスでは、サむトでの䜜業を開始する前に新しい゜フトりェアをダりンロヌドする必芁がありたすが、このダりンロヌドは他のむンストヌルず同じですたずえば、ディスクからむンストヌルする任意のアプリケヌション。 TeXでこれがどのように起こるかを芚えおおいおくださいたずえば、新しいフォントを䜿甚する堎合、レむアりトを開始する前に蚈算が実行され特別なMETAFONTサブルヌチンを䜿甚、その埌、新しいフォントを䜿甚するすべおのドキュメントは既に正しく衚瀺されたす。 フォントの䟋は文字どおりにのみ理解されるべきではありたせん。実際の状況では、「フォント」はプログラムコヌドずしおも理解できたす。フォントは、フォントのように、それぞれが固定のセマンティクスを持぀特定の論理的䜍眮によっお特定の方法で泚文および配垃できたす



ただし、ここで別の質問が発生したす-オペレヌティングシステム自䜓に既に実装できないサむトで具䜓的にできるこずは䜕ですか-しかし、この質問は蚘事の最埌に残したす。これは非垞に重芁な質問です。よく準備しおください。



䞊蚘は、単玔なテキストで単玔なペヌゞを䜜成する堎合でも特定のレむダヌが必芁であり、これらのレむダヌがドキュメントのコンテンツずのやり取りを盎接制埡するこずを瀺すこずを目的ずしおいたす。 䞀郚のブロックは、ドキュメントの論理構造に察する䞊䜍構造です。 他のブロックは、機胜ず操䜜ぞのアクセスを担圓し、ナヌザヌむンタヌフェむスの最終コンポヌネントによっお远加する必芁がありたす。 3番目のブロックが蚭蚈を担圓したす。 遞択したタスクずナヌザヌの具䜓的な意図に応じお、ブロックの構成も倉わりたす。 テキストを読むだけなら、それは1぀です。 説明ずヘルプを埗るこずができるようにしたい堎合は、異なる堎合がありたす。最埌に、テキストを線集する堎合は、ブロックの構成が3番目になりたす。 最埌に、動的コンテンツを扱う堎合は、...オプションが倚すぎたすか



最初の䜙談長い



これたたはそのオペレヌティングシステムOSをコンピュヌタヌにむンストヌルするこずで、䜕を受け取るこずができるのか疑問に思ったこずはありたせんか 理論的には、「すぐに䜿える」䜜業のための「タヌンキヌ」システムを完党に準備する必芁がありたす。 あなたには、OSがこれに必芁なすべおのツヌルを備えおいるこずを期埅する暩利がありたす。 䞀方、実際には、別のこずが起こりたす。最初にOSをむンストヌルし、次に必芁なアプリケヌションをむンストヌルしたす。 なぜこれをしおいるのですか いいえ、もちろん、あなたはそれをしなければなりたせん。 これには理由がありたす。 あなたが䜜家なら、将来の出版物を準備するための特別なツヌルが必芁です。 あなたがアヌティストたたはデザむナヌである堎合、描画たたは構築を自動化する特別なツヌルが必芁です。 あなたが゜フトりェア開発者である堎合、コンパむラず開発環境が必芁です。 すべお1぀たたは別の汎甚オペレヌティングシステムを䜿甚し、自分に必芁な゜フトりェアを遞択しおむンストヌルしたす。 しかし... ...これを行う必芁がない堎合はどうなるか想像しおみおください もちろん、私はこれを取り陀くこずを提案したせん、それは完党に䞍可胜です。 同じ質問を別の角床から芋お、実際の問題を芋るこずをお勧めしたす。



アプリケヌション自䜓から「抜象的」掚論を始めたしょう。 このような各アプリケヌションは、モノリシック蚭蚈です。 「歎史的に発展した」ず蚀うこずができたす。 はい、そうです。 そしお今、質問を自問しおくださいこのアプリケヌションにはOS自䜓にはありえないものは䜕ですか 通垞、各アプリケヌションは特定の圢匏のファむルで動䜜するため、このアプリケヌションの䞻な兞型的な操䜜は、察応する圢匏のファむルの凊理ですオヌプン、ロヌド、線集、保存。 OSが操䜜を管理するために蚭蚈された完党なシステムである堎合、䞀般的なファむル操䜜はOS自䜓の䞍可欠な郚分である必芁がありたす。 必芁なアプリケヌションを「むンストヌル」するこずにより、実際に、特定の圢匏のファむルを凊理する特定の方法をOSに䌝え、OSは考えられるすべおの圢匏のファむルのファむルにアクセスするための単䞀のナヌザヌおよび共通゜フトりェアむンタヌフェむスを提䟛したす。 実際、OSは腞内に独立しおプログラムオブゞェクト「アプリケヌションレベル」プログラムオブゞェクトの適甚タスクを解決するためのオブゞェクトを任意に呌び出すを䜜成する必芁がありたす。これは、OSずこのアプリケヌション間で共有されるリ゜ヌスのようなものです。 プログラムオブゞェクトはドキュメントずも呌ばれたすが、呌び出されないため、プログラムオブゞェクトの本質は倉わりたせん。プログラムオブゞェクトはアプリケヌションの「内郚」にあるように䜜成されたすが、OSによっお管理されたす。 したがっお、各アプリケヌションはドキュメントファクトリであり、OSに凊理䞭のドキュメントのフォヌマットの蚘述仕様を提䟛し、すでにOSがナヌザヌむンタヌフェむスを䜜成する基本機胜を匕き受けたす。 次に、OSは各アプリケヌションに独自の環境を提䟛したす。これは、アプリケヌション自䜓のタむプずナヌザヌが珟圚解決しおいるタスクによっお決たりたす。 このアプロヌチにより、OSずデヌタベヌスを比范するこずができたす。デヌタベヌスでは、すべおのデヌタが敎然ず栌玍されおおり、それらぞのアクセスはク゚リ蚀語を䜿甚しお実行されたす。 残念ながら、アプリケヌションの「堅牢性」は、このアプロヌチの実装を著しく劚げたす。



アプリケヌションがモノリシックではないこずを想像しおください。 これはどういう意味ですか 通垞の状況では、OSは起動されたアプリケヌションをRAMにロヌドし、制埡を䞎えたす。 あなたがしたいこずをしおください しかし、第䞀に、各アプリケヌションは「真空䞭の球状の銬」ではなく、特定の問題を解決するために蚭蚈された䞀皮の゚ンティティです。 この意味で、各アプリケヌションは特定の「シェルフ」䞊のOSに「暪たわる」必芁がありたす。 OSをデヌタベヌスずしお認識した堎合、このデヌタベヌスには、実際には本栌的なシ゜ヌラスたたは抂念の登録を含む参考曞「呜名法」のようなものがあり、各アプリケヌションはこのディレクトリの特定の䜍眮に関連付けられたす。 第二に、各アプリケヌションは、盞互接続され盞互接続されたコンポヌネントのセットずしお認識される必芁があり、各コンポヌネントもOSによっお制埡される必芁がありたす。 したがっお、OSにコンポヌネントの特定のプヌルをむンストヌルするず、新しいアプリケヌションコンポヌネントの新しい組み合わせを収集しお、新しい問題を解決できたす。 プログラムコヌドがいく぀かのテヌブルのOSに保存されおいる堎合、適切に構造化されたク゚リをプログラムコヌドデヌタベヌスにコンパむルし、呜什の順序遞択の圢匏で最終コヌドを取埗するこずで、必芁なアプリケヌションを䜜成できたす。 第䞉に、各「モノリシック」アプリケヌションは「そのたた」実行可胜ファむルの圢匏たたはコンパむル枈みパッケヌゞの圢匏で配信され、アプリケヌションから゜ヌスコヌドを抜出する方法がありたせんこれは圌の著曞「゜フトりェア゚ンゞニアリング」のSergey Tarasovもちろん、このアプリケヌションの開発者がこの幞犏な機䌚を突然提䟛しなかった堎合を陀き、「絶望的なプログラミング」ず呌ばれる内郚から。 アプリケヌションの開発がコンポヌネントモデルに埓っお厳密に実行される堎合、察象のアプリケヌションで垞に「りィザヌド」モヌドに切り替え、分解し、コンポヌネントレベルに移動し、必芁なコンポヌネントの゜ヌスを抜出し、それを修正し、倉曎を自動的に保存できたす。新しいバヌゞョンずしお、叀いバヌゞョンず䞀緒に新しいバヌゞョンを䜿甚したす。 はい、これは基本的に、゜ヌスコヌドを隠し、ハッキングに察する特別な保護を䜜成するずいう䞀般に受け入れられおいる慣行ずは盞反したす。



䞊蚘は非垞に明確な結論に達したす。OSは、異皮デヌタベヌスコヌドデヌタベヌス、アプリケヌションデヌタベヌス、およびナヌザヌが凊理する最終デヌタを含むナヌザヌデヌタベヌスを管理するDBMSのようなものでなければなりたせん。 各アプリケヌションは、リストされおいる各デヌタベヌスに䞀定の貢献をしたす。実際、それ自䜓はデヌタベヌスのようなものです。 したがっお、アプリケヌションのむンストヌル、操䜜、および砎棄は、さたざたなデヌタベヌスで実行されるトランザクションです。 そしお、ここで非垞に重芁な質問に行きたす。ここで、このアプリケヌションに固有のコヌドはどこにありたすか 同じ質問の別のバヌゞョンこのアプリケヌションの゜ヌスコヌドはOSの堎合どの圢匏で配信されるべきですかここでは、むンストヌルされた各アプリケヌションを宣蚀圢匏でそしお開発者が提䟛するアプリケヌションに最適なアプロヌチがあり、コンパむルがこのアプリケヌションがOSにむンストヌルされおいるずきにのみ実行されるようにしたすかこの質問に察する肯定的な回答は、いく぀かの重芁な結果に぀ながりたす。第䞀に、OSは最初からすべおの䞻芁なタむプの察話である可胜性がありそうあるべきです、兞型的なタスクが実装されおいたす。これは、OSず共にむンストヌルされるプログラムコヌドは、事前に定矩枈みの兞型的なタスクに最初に結び付けられる必芁があるこずを意味したす。第二に、兞型的な操䜜ず兞型的な盞互䜜甚には、ナヌザヌむンタヌフェむスを䜜成するためのかなり圢匏化され、自動化されたスキヌムが含たれたす。そしおこれは実際、アプリケヌションはすべおの皮類のダむアログボックスを開くこずに関連する同じ機胜の実装を匕き受ける必芁はありたせん。第䞉に、既補の宣蚀ず䜜業コンポヌネントがあるため、新しい宣蚀ず新しいコンポヌネントを埓業員たたは察話者に配信するこずにより、新しいアプリケヌションを䜜成できたす。郚分的に、それは突然本栌的なOSになる1Cアプリケヌションに䌌おいたす。実際、䞊蚘のすべおを簡単に説明するず、技術プラットフォヌムずしおのOSは特定の「構成オブゞェクト」をサポヌトし、構成自䜓はナヌザヌデヌタを凊理するためのモデルを蚘述し、ある時点で䜕らかのデヌタが䜿甚されたす実行および機胜デスクトップの倖芳、䜿甚可胜な機胜などを決定する1぀の構成。さたざたなダむアログボックスを開くこずに関連付けられおいたす。第䞉に、既補の宣蚀ず䜜業コンポヌネントがあるため、新しい宣蚀ず新しいコンポヌネントを埓業員たたは察話者に配信するこずにより、新しいアプリケヌションを䜜成できたす。郚分的に、それは突然本栌的なOSになる1Cアプリケヌションに䌌おいたす。実際、䞊蚘のすべおを簡単に説明するず、技術プラットフォヌムずしおのOSは特定の「構成オブゞェクト」をサポヌトし、構成自䜓はナヌザヌデヌタを凊理するためのモデルを蚘述し、ある時点で䜕らかのデヌタが䜿甚されたす実行および機胜デスクトップの倖芳、䜿甚可胜な機胜などを決定する1぀の構成。さたざたなダむアログボックスを開くこずに関連付けられおいたす。第䞉に、既補の宣蚀ず䜜業コンポヌネントがあるため、新しい宣蚀ず新しいコンポヌネントを埓業員たたは察話者に配信するこずにより、新しいアプリケヌションを䜜成できたす。郚分的に、それは突然本栌的なOSになる1Cアプリケヌションに䌌おいたす。実際、䞊蚘のすべおを簡単に説明するず、技術プラットフォヌムずしおのOSは特定の「構成オブゞェクト」をサポヌトし、構成自䜓はナヌザヌデヌタを凊理するためのモデルを蚘述し、ある時点で䜕らかのデヌタが䜿甚されたす実行および機胜デスクトップの倖芳、䜿甚可胜な機胜などを決定する1぀の構成。新しい宣蚀ず新しいコンポヌネントを埓業員たたは察話者に配信したす。郚分的に、それは突然本栌的なOSになる1Cアプリケヌションに䌌おいたす。実際、䞊蚘のすべおを簡単に説明するず、技術プラットフォヌムずしおのOSは特定の「構成オブゞェクト」をサポヌトし、構成自䜓はナヌザヌデヌタを凊理するためのモデルを蚘述し、ある時点で䜕らかのデヌタが䜿甚されたす実行および機胜デスクトップの倖芳、䜿甚可胜な機胜などを決定する1぀の構成。新しい宣蚀ず新しいコンポヌネントを埓業員たたは察話者に配信したす。郚分的に、それは突然本栌的なOSになる1Cアプリケヌションに䌌おいたす。実際、䞊蚘のすべおを簡単に説明するず、技術プラットフォヌムずしおのOSは特定の「構成オブゞェクト」をサポヌトし、構成自䜓はナヌザヌデヌタを凊理するためのモデルを蚘述し、ある時点で䜕らかのデヌタが䜿甚されたす実行および機胜デスクトップの倖芳、䜿甚可胜な機胜などを決定する1぀の構成。技術プラットフォヌムずしおのOSが特定の「構成オブゞェクト」をサポヌトしおいるこず、構成自䜓がナヌザヌデヌタを凊理するためのモデルを蚘述しおおり、デスクトップの倖芳、䜿甚可胜な機胜などを決定する1぀の構成が垞に䜿甚実行および機胜されおいるこずd。技術プラットフォヌムずしおのOSが特定の「構成オブゞェクト」をサポヌトしおいるこず、構成自䜓がナヌザヌデヌタを凊理するためのモデルを蚘述しおおり、デスクトップの倖芳や䜿甚可胜な機胜などを決定する1぀の構成が垞に䜿甚実行および機胜されおいるこずd。など



...そしお、ここで質問がありたす。これらの悪名高いコンポヌネントは、WEBペヌゞに関連しお以前に話したブロックに類䌌しおいたすか



゚ピ゜ヌド2コンポヌネントアプロヌチ



簡単なプログラムを䜜成する堎合、簡単な手順の圢匏でそれを調敎したす。通垞、この手順のプログラムコヌドを泚意深く読んで、それが䜕をするのかを理解するだけで十分です。特に曞く堎合、特定の垞に同じスタむルを遵守したす。コヌドの䞀郚のフラグメントには独立した重芁性があるこずがわかり、これらのフラグメントを独立したプロシヌゞャずしお蚭蚈したいず思うかもしれたせん。新しい機胜ブロックを䜜成し、それに名前を付けるず、䞀床決定した人質になりたす。これがあなたのコヌドである堎合、それは䞀぀のこずです。そしお、あなたは新しい手続きを曞くこずができたす。もう1぀は、これが自分のコヌドではない堎合、この関数のバヌゞョンを可胜な堎合䜜成できるか、そうでなければ内容に満足する必芁がある堎合です。



手続き型のアプロヌチに埓う限り、すべおは特定のフレヌムワヌク内に残りたす。しかし、開発されたナヌザヌむンタヌフェむスを䜿甚する必芁があるずすぐに、すべおが非垞に耇雑になりたす。最初に、ナヌザヌむンタヌフェむスコンポヌネントが衚瀺されたす。次に、コンポヌネント自䜓にむベントがあり、これらのむベントをどこかで凊理する必芁がありたす。第䞉に、実際には、開発ツヌルで䜿甚されるコンポヌネントの構築方法に制限されたす。実際、コンポヌネントの出珟は、コンポヌネント間でコヌドが「がやけおいる」ずいう事実に぀ながりたす。これにより、アプリケヌションの゜ヌスコヌドの調査が倧幅に耇雑になりたす。



ただし、ここでは倧きな問題が1぀ありたす。これに぀いおは時々話されたすが、どういうわけか非垞に気楜に話されたす。問題は、コンポヌネントずは正確に䜕であるか、具䜓的にはコンポヌネントのロゞックをどこで蚘述する必芁があるかです。問題を非垞に簡単に定匏化するず、次のように蚀えたす。コンポヌネントからのメッセヌゞの凊理を担圓するのは誰ですか実際、これは゜フトりェアアヌキテクチャを構築する䞊で重芁な問題です。任意のコンポヌネントの実装には、少なくずも3぀のオブゞェクトが必芁です。1぀のオブゞェクトは倖郚ナヌザヌむンタヌフェヌスを蚘述し、このオブゞェクトで初期むベントが発生したす。 2番目のオブゞェクトは、内郚゜フトりェアむンタヌフェヌスを定矩し、最初のオブゞェクトのむベントの䞀次凊理を実行したす。 3番目のオブゞェクトは具䜓的なアクションを実行したす。本質的にコンポヌネントのロゞックは3番目のオブゞェクトに実装されおおり、コントロヌラヌずしお認識できたすMVCの甚語を䜿甚。すぐに䜿甚できるビゞュアルコンポヌネントを実装しようずするのは間違いです。たずえば、衚圢匏の芖芚コンポヌネントに基づいお[実行䞭の] [Calendar]コンポヌネントを実装しようずするこずができたすが、テヌブルビュヌは単なるビュヌであり、カレンダヌは本質的に特定の機胜のセットであり、ある意味では特定のデヌタ型。新しいコンポヌネントを䜜成しようずするのではなく、既存のコンポヌネントをデヌタオブゞェクトに接続バむンドする必芁がありたす。このアプロヌチでは、デヌタコンポヌネントずビゞュアルコンポヌネントぞの内郚゜フトりェアむンタヌフェむスを指定するだけです。オッカムのカミ゜リのようなものがここで機胜し、芖芚的なコンポヌネントのツリヌが倧きくなりすぎないようにしたす。しかし、この方法で、䞀般に、必ずしも芖芚的ではないコンポヌネントを凊理できるず想定されおいる堎合、䞀般的なコンポヌネントプログラミング方法を想定しお、コンポヌネントなどを䜿甚するず、コンポヌネントからアプリケヌションを構築するための単䞀のスキヌムを実装できたす。したがっお、コンポヌネントアプロヌチでは、䞀郚のコンポヌネントで発生するむベントを他のコンポヌネントによっお生成されるアクションに倉換する特別なむンタヌフェむスオブゞェクトのレむダヌを垞に䜜成する必芁がありたす。実際、コンポヌネントをチェヌンでリンクするこずで、倧芏暡システムの䞀郚を説明したす。これらのコンポヌネントをコンポヌネント間の接続ずずもに蚘述する蚀語は、倚くの人が考える非垞に本栌的なモデリング蚀語になりたす。



いく぀かのプログラムコヌドを䞀連の呜什ずしお想像しおください。通垞の状況では、プロシヌゞャずしお蚭蚈されたこのコヌドは、プロセッサによっお盎接実行されるコヌドに䞀床コンパむルされたす。特定のオブゞェクトが各倉数の埌ろに隠れおおり、各操䜜がオヌバヌロヌドされおいる堎合、いわば、アむドル状態でプロシヌゞャを開始し、このプロシヌゞャ甚に構築された解析ツリヌを再珟できたす。これは、実際のデヌタを䜿甚しお実際の蚈算を実行する前であっおも、必芁な構造を準備できるこずを意味したす。蚀い換えるず、デヌタの実際の凊理だけでなく、たずえば、むベントのプロトコルを維持したり、デヌタをある圢匏から別の圢匏に倉換したりする゜フトりェアオブゞェクトの远加の局が自動的にありたす。ナヌザヌむンタヌフェむスを管理し、特定の機胜ぞのアクセスを制限したす。この䞭間局がある堎合は、既補のアプリケヌションを䜿甚しお、゜ヌスコヌドの圢匏で保存できたす。しかし、ここで特に重芁ず思われるのは、厳密な手続き的アプロヌチを順守しお、すべおのプログラムを䜜成する機䌚です。たた、たずえば、いく぀かのパラメヌタの入力を必芁ずする特定の蚈算アルゎリズムを実装する堎合、これをデヌタ入力ずしお蚭蚈する必芁がありたすが、入力自䜓を䜕らかの方法で蚘述しないでくださいオブゞェクトの䞭間局は、入力デヌタず入力フィヌルドの必芁なバむンディングを実行したすたたはファむル遞択ダむアログで。したがっお、コンポヌネントアプロヌチを䜿甚するず、同じプログラムコヌドを再利甚できたす。コンテキストに応じお、このコヌドの結果は異なりたす。そしお、最終ナヌザヌデヌタの凊理䞭に実際に実行される蚈算は、「䞭間」蚈算の結果ずしお、゜ヌスコヌドで指定された䞀般化されたアルゎリズムの代わりに、アプリケヌションの珟圚の構成によっお決定される特定の実装が定矩されるため、所定の蚈算ずは異なる堎合がありたす



二床目の䜙談それほど長くない



適切な方法でプログラミングを「数孊化」し、ある皮のスカラヌ積を怜蚎するこずは非垞に魅力的です。類掚の意味は、特定の空間を蚭定し、その䞭に乗算2぀のオブゞェクトの盞互䜜甚ず加算結果の連結たたはマヌゞを蚭定するこずです。次に、スカラヌ積挔算は、かなり広範囲の珟象を蚘述するこずができたす。たた、スカラヌ積はどこにありたすか、グラム-シュミット盎亀化プロセスがありたす。ここでは、線圢独立の抂念が必芁です。線圢に独立した「ベクトル」のシステムがあるので、正芏盎亀システムに進むこずができ、正芏盎亀ベヌスのスカラヌ積は非垞に簡単に説明されたす。゜フトりェアを䜜成するずきは、この単玔さを远求する必芁がありたす。



デヌタの盎亀化ずは䜕ですか事実は、゚ンティティが状況によっお異なる圢で珟れるずいうこずです。これは、珟実䞖界の同じオブゞェクトが、さたざたな盞互䜜甚のさたざたな圹割で珟れるこずを意味したす。したがっお、そのようなタむプの察話ごずに、独自のプログラムオブゞェクトを䜜成する必芁がありたす。ただし、そのような各オブゞェクトたたはオブゞェクトのクラスは、独自の個別のコンポヌネントを䜿甚しお凊理されたす。実際、さたざたなタむプの制埡フロヌを䜜成するこずにより、開発者は最も䞀般化されたコヌドを䜜成するこずができたす。



そしお、盎亀化は操䜜にずっお䜕を意味したすかこれは、すべおの操䜜ぞの䟿利なアクセスをい぀でも敎理できるこず、操䜜の皮類ごずのリストを䜜成できるこず、操䜜甚に別のデヌタベヌスを維持できるこずを意味したす。特に重芁なように、統䞀された方法でオブゞェクトの操䜜をコヌディングしおこのコヌドを䜜成する機䌚がありたすプログラムコヌドの物理的衚珟の䞀郚。FORTHを、プログラムを再垰関数のバンドルずしお衚珟するずいうアむデアずずもに思い出しおください。関数操䜜のテヌブルがある堎合は...有限状態マシンShalytoによるを構築するこずで、文字通りあらゆる問題を解決できたすが、理論䞊、この機胜はOSに構築する必芁がありたす



゚ピ゜ヌド3プログラミング蚀語の階局



プログラミングず耇雑なドキュメントのレむアりトの比范は、非垞に瀺唆的なものです。通垞、プログラムの゜ヌスコヌドが最初に䜕らかのプログラミング蚀語で蚘述され、次にこのコヌドがタヌゲットマシンのコヌドに倉換されるず想定されおいたす。 いわゆる「バむトコヌド」ずいう圢匏の重芁な䞭間プレれンテヌションもありたすが、これは今ではそうではありたせん。



ここには2぀の問題点がありたす。



䞀方では、耇雑な゜フトりェアはその゜ヌスコヌドの圢匏ではなく、䜕らかの特別な圢匏で提瀺する必芁がありたす。この意味で、アプリケヌションの゜ヌスコヌドは、䜕らかのプログラミング蚀語のコヌドではなく、デヌタベヌスのようなものでなければなりたせん。実際、開発環境は、高床な機胜を備えた単玔な゜ヌスコヌド゚ディタヌではなく、たずえば䞀皮の「アカりンティング」を可胜にするドキュメント指向システムである必芁がありたす。このような環境で各アクションを特定の「アカりント」を持぀操䜜ずしお認識する堎合、耇雑な䌁業システムの「プログラミング」は、特定の「アカりント」に埌続の「レポヌト」の準備を補充するこずからなり、異なるタむプの「レポヌト」は異なるタスクに察応したすたずえば、蚭蚈されたシステムのドキュメントも䞀皮の「レポヌト」ず芋なすこずができたす。 これに、私の意芋では、結果ずしお、倧䌁業システムの真面目な開発者がやっおくる。しかし、残念ながら、このアプロヌチは「圓たり前」になりたせん。



アプリケヌションは、最初は垞にプロゞェクト状態にあるこずが重芁です。぀たり、プログラムコヌド最終プログラミング蚀語は、開発者の䜜業の最終結果であり、このプログラムコヌドの前必芁な堎合にのみ補品の実際の動䜜は完党に準備でき、開発者は倚くの䜜業を行い、最初のリリヌスは、同じ開発ツヌルに座っおいる顧客ず請負業者が最終的に「握手」し、切望された「赀W「ボタン䟋えば、呌ぶこずができる、」新発売「。これにより、゜フトりェアの䜜成ずドキュメントのレむアりトが非垞に近くなりたす。「゜ヌスコヌド」を蚘述し、印刷の盎前に、䜜成した「コヌド」をレむアりトシステムに枡したす。もちろん、垞に䞭間結果を確認できたすが、しかし、たずえば、あるコレクションの蚘事を曞いた堎合、「゜ヌスコヌド」だけを゚ディタヌに送信するこずがありたす。



䞀方、手続き型アプロヌチず宣蚀型アプロヌチの関係に぀いおは疑問が生じたす。実甚的な䟋を䜿わずに、「蚀葉で」質問の本質を説明するこずは困難です。あらゆる皮類の宣蚀を非垞に広く䜿甚できる堎合は、...たずえば、ネットワヌクを介しおデヌタを送信するためにのみ䜿甚したす。 この時点でXMLは䜜成されおいたせんでしたか。宣蚀のみを受け取るこずにより、OSは、指定された宣蚀に埓っお、独自のコヌドをコンパむルできたす。 そしお、それは安党でしょうこの意味で、OSは蚀語の階局ずしお認識できたす。぀たり、OSには翻蚳者を䜜成するための組み蟌みツヌルが必芁ですが、質問は今日のように提瀺されたせん-どの蚀語を遞択するかプログラミング環境ず開発環境、ただし反察の方法どのプログラミング蚀語を䜜成する必芁があるか、特定のタむプの問題を最適に解決するため。私はただこれを知りたせんが、関数型プログラミングはこの質問に察する答えを明らかにし、ある皮の3次元メモリを䜜成する分野での将来の発芋同じデヌタを非垞に倚くの方法で配眮でき、タスクに応じお圌らはいわゆるのパフォヌマンスの問題を解決したす「レむゞヌコンピュヌティング」は、抂念的に透明であり、蚌拠が正確であるため、非垞に有望ず思われたす。゚ラヌのないプログラミングに進む3次元メモリタスクに応じお、同じデヌタを膚倧な数の方法で配眮できるにより、いわゆる「レむゞヌコンピュヌティング」は、抂念的に透明であり、蚌拠に正確であるため、非垞に有望ず思われたす。゚ラヌのないプログラミングに進む3次元メモリタスクに応じお、同じデヌタを膚倧な数の方法で配眮できるにより、いわゆる「レむゞヌコンピュヌティング」は、抂念的に透明であり、蚌拠に正確であるため、非垞に有望ず思われたす。゚ラヌのないプログラミングに進む



Reprise䜕が起きおいるのか



なぜすべおが起こるように起こるのですか



たず第䞀に、これには経枈的な説明がありたす。完党な倚機胜で安党な゜リュヌションの詳现な怜蚎ず実装に必芁な時間はありたせん。「今ここ」ですべおが必芁です。その結果、䜜品の前面に最初に賭けた䌁業が勝者ずなりたす。ある日、特定のアクティビティを実際に自動化する補品を䜜成するず、将来の䞖代にはパンがなくなりたす。



「政治は集䞭した経枈です。」したがっお、その圱響を時間ず空間に広げるためには、ナヌザヌにずっお自分自身の重芁性を垞に維持する必芁がありたす。実際のタスクが簡単に解決される堎合、䜕らかの方法でそれらを敎理する方法がある堎合、通垞の操䜜を1回自動化し、珟圚のナヌザヌの問題を解決するためにその堎でアプリケヌションを蚭蚈できる堎合、...゜フトりェアを開発する倚くの䌁業が必芁なのはなぜですか



そしお、「集䞭政治」ずは䜕ですかそう科孊そしお、科孊は私たちに䜕を教えおくれたすか興味のある読者に、ハむパヌリンクの元のアむデアは、あるドキュメントから別のドキュメントに切り替えるこずを可胜にするこずではなく、2぀のドキュメント間に䞍可解なリンクを䜜成しお、1぀のドキュメントを衚瀺しながら別のドキュメントを同時に䜿甚できるようにするこずであるこずを思い出しおください。 。 WEB党䜓の倉化の動的な性質を反映できるようにするには、本質的にハむパヌリンクが必芁です。぀たり、1぀のドキュメントを開くず、関心のある䞻題に関連する情報を自動的にアップロヌドできたす。ある皮の成果JSONおよびRESTずしお最近報告されたものは、圓初は分散デヌタストレヌゞのテクノロゞヌ党䜓の基盀になりたした。しかし、この情報の「楜園」を実珟するには、理解する必芁がありたすそれ第䞀に、WEBは倧芏暡な分散ナレッゞベヌスである必芁がありたす぀たり、アむデアは階局型分散セマンティックデヌタベヌスに基づいおおり、通垞のリレヌショナルデヌタベヌスは名誉あるが、それでも䞋䜍の「䞭玚」 「䜍眮」;第二に、このシステムが機胜するためには、トラフィックを最小限に抑える必芁はありたせん通垞行われたすが、デヌタの絶え間ない亀換を確立するために、それを定期的にしたす぀たり、特にDDoS攻撃ができないこずを意味したす。そのため、「特定のペヌゞをリク゚ストするず、特定の情報のみをリク゚ストするこずが可胜になりたす;第䞉に、WEBナヌザヌの堎合、各ペヌゞに線集の履歎がある倧きなりィキペディアずしお衚瀺される必芁がありたす。い぀でもディスカッションを䜜成したり、線集に参加したりできたす。䞀蚀で蚀えば、このようなWEBは、「壊れた」リンクが存圚しない、ナヌザヌが文曞を扱う、各文曞に独自の履歎などがある珟実の䞖界に䌌おいたす。などはい、はい。「悪くない」を倢芋おいたすか



コヌダただ始たったばかり



なぜこの蚘事を曞いたのですか



たず、自分の考えを少し敎理しお、それらを銖尟䞀貫した方法で提瀺するこずにしたした。䞀貫しお倱敗したず述べた。非難する。いく぀かの異なる物語や゚ピ゜ヌドが刀明したした。理論的には、ここで、この蚘事では、私の熱狂的な想像に出䌚った氷山を連想させ、かなりたずもな蚘事のいく぀かの空癜が埋められ、䞀般的に蚀えば、Habrahabrでここに曞くべきです。



第二に、私は自分自身の興味の茪を自分自身のために抂説しようずし、自分の怜玢の領域を自分のために決定したした。コンポヌネントアプロヌチ開発する必芁がありたすに基づいお柔軟な゜フトりェアシステムを開発するこずは、私にずっお非垞に興味深いでしょう。䞀般化されたプログラミングを実装し、プログラミングにおける手続き型ず宣蚀型の原則の比率の魅力的な問題を解決する非暙準的な方法を探したす。



第䞉に、...そしおおそらくすべおがすでにそこにあるのでしょうかすべおがすでに発明されおいたすか必芁なものはすべおすでに存圚しおいたすかさお、それから私は他の人からそれに぀いお聞いお喜んでいるでしょう、そしお私はすぐに本圓の問題に察凊するこずができたす。そしお、私を信じおください、私がこの道で䜕をしたかに぀いお曞く倚くの理由があるでしょう...



か぀お蚀われたように、「あなたがどのように䞀生懞呜働いおいるかに぀いお話すのではなく、達成したこずに぀いおもっず教えおください。」



All Articles