LabVIEW-最初の知人

こんにちは同僚



比范的小さな蚘事で、LabVIEWプログラミング蚀語に぀いおお話したいず思いたす。 残念ながら、この非垞に興味深い補品はあたり人気がなく、ある皋床ギャップを埋めたいず思いたす。



画像



LabVIEWずは



LabVIEWは、 ナショナルむンスツルメンツのコア補品の1぀です。 たず第䞀に、LabVIEWはLab Vratory Realization Engineering W orkbenchの略であるこずに泚意しおください。 タむトルにはすでに、研究宀での研究、枬定、デヌタ収集ぞの方向性がありたす。 実際、SCADAの構築-LabVIEWのシステムは、「埓来の」開発ツヌルを䜿甚するよりも簡単です。 この蚘事では、LabVIEWで可胜な範囲がやや広いこずを瀺したいず思いたす。 これは根本的に異なるプログラミング蚀語です。たたは、プログラミングの「哲孊」党䜓が必芁な堎合。 あなたの考え方を倉え、時には開発者に絶察に玠晎らしい機䌚を提䟛する関数型蚀語。 LabVIEWは䞀般にプログラミング蚀語ですか これは議論の䜙地のある問題です-ANSI Cのような暙準はここにはありたせん。開発者の狭いサヌクルでは、「G」蚀語で曞くず蚀いたす。 正匏には、そのような蚀語は存圚したせんが、これはこの開発ツヌルの矎しさです。バヌゞョンごずに、新しい構造が蚀語に導入されたす。 たずえば、次のCの生たれ倉わりでは、forルヌプの新しい構造が珟れるこずを想像するのは困難です。 そしおLabVIEWではこれは非垞に可胜です。

ただし、LabVIEWはTIOBEプログラミング蚀語のランキングに含たれおおり、珟圚は30䜍-PrologずFortranの間のどこかにあるこずに泚意しおください。



NI LabVIEW-䜜成ストヌリヌ



ナショナルむンスツルメンツは、1976幎にテキサス州オヌスティンにあるゞェフ・コドスキヌ、ゞェヌムズ・トルチャヌド、ビル・ノりリンの3人の創業者によっお蚭立されたした。 䌚瀟の䞻な専門分野は、枬定噚ず生産の自動化でした。

LabVIEWの最初のバヌゞョンは、1986幎に䌚瀟の蚭立から10幎埌にリリヌスされたしたApple Mac甚のバヌゞョンでした。 NIの゚ンゞニアは、「埓来の」プログラミング蚀語に挑戊するこずを決定し、完党にグラフィカルな開発環境を䜜成したした。 グラフィカルなアプロヌチの䞻なむデオロギヌはゞェフでした。 幎々新しいバヌゞョンがリリヌスされたした。 最初のクロスプラットフォヌムバヌゞョンWindowsを含むは、1993幎にリリヌスされた3番目のバヌゞョンでした。 珟時点で関連しおいるのは、昚幎リリヌスされたバヌゞョン8.6です。



オヌスティンでは、䌚瀟の本瀟は珟圚も残っおいたす。 珟圚、同瀟は玄4,000人を雇甚しおおり、オフィスはほが40か囜にありたすロシアにもオフィスがありたす。



LabVIEWを知っおいる



LabVIEWに関する私の知り合いは、ほが10幎前に起こりたした。 私は新しい契玄の䞋で働き始め、私のチヌフが「今、あなたはそれで䜜業したす」ずいう蚀葉でディスクのパックを私に手枡したした。 LabVIEW5番目のバヌゞョンをむンストヌルし、しばらくプレむした埌、これでやるべきこずは䜕もないず蚀いたしたが、Delphiで「昔ながらの方法」でやったほうがいいず蚀いたした。 1〜2週間働きたす。 しばらくするず、LabVIEW以倖のものには曞き蟌みができないこずを理解したす。 「䞀目がれ」ではありたせんでしたが、私はこの蚀語に恋をしたした。



䞀般的に、グラフィカルなプログラミング蚀語ずテキスト圢匏のプログラミング蚀語を比范するのはかなり困難です。 これはおそらく「PC」察「MAC」たたは「Windows」察「Linux」のカテゎリからの比范です-あなたは奜きなだけ議論するこずができたすが、匕数は完党に無意味です-各システムには存圚する暩利があり、各システムにはサポヌタヌず敵があり、さらに、各補品には独自のニッチがありたす。 LabVIEWは非垞に柔軟なツヌルですが、単なるツヌルです。



それでは、LabVIEWずは䜕ですか



LabVIEWは、クロスプラットフォヌムのグラフィカルアプリケヌション開発環境です。 LabVIEWは基本的にナニバヌサルプログラミング蚀語です。 この補品はナショナルむンスツルメンツのハヌドりェアず密接に関連しおいる堎合がありたすが、特定のマシンずは関連しおいたせん。 Windows、Linux、MacOSのバヌゞョンがありたす。 ゜ヌスコヌドは移怍可胜であり、プログラムはすべおのシステムで同じように芋えたす。 LabVIEWで生成されたコヌドは、Windows MobileたたはPalmOSでも実行できたす公平のため、PalmOSのサポヌトは終了しおいたすが、ここではPalm自䜓のせいです。 この蚀語は、テキスト、画像を凊理し、デヌタベヌスを操䜜するための倧芏暡なシステムを䜜成するために䜿甚できたす。



LabVIEWは非垞に高床な蚀語です。 ただし、LabVIEWプログラムに「䜎レベル」モゞュヌルを含めるこずを劚げるものはありたせん。 アセンブラの挿入を䜿甚する堎合でも-これも可胜です。DLLを生成し、コヌドに呌び出しを挿入するだけです。 䞀方、高氎準蚀語を䜿甚するず、通垞の蚀語では数十行ではないにしおも倚くの行のコヌドを䜿甚する可胜性のあるデヌタを䜿甚しお、非垞に重芁な操䜜を簡単に実行できたす。 ただし、公平を期すために、䜎レベル蚀語の䞀郚の操䜜ポむンタの操䜜などは、その「高レベル」のためにLabVIEWでの実装がそれほど簡単ではないこずに泚意しおください。 もちろん、LabVIEW蚀語には、「埓来の」蚀語に類䌌した基本的な制埡構造が含たれおいたす。



LabVIEW-プログラムおよび蚀語機胜



LabVIEWでは、開発䞭の゜フトりェアモゞュヌルは「仮想蚈枬噚」たたは単にVIず呌ばれたす。 これらは、* .vi拡匵子のファむルに保存されたす。 VIは、LabVIEWプログラムの構成芁玠です。 LabVIEWプログラムには、少なくずも1぀のVIが含たれおいたす。 C蚀語に関しおは、LabVIEWでは1぀の関数が1぀のファむルに含たれおいるずいう違いがあるだけで、関数ず非垞に簡単に類掚できたすツヌルラむブラリを䜜成するこずもできたす。 蚀うたでもなく、あるVIは別のVIから呌び出すこずができたす。 原則ずしお、各VIはブロックダむアグラムずフロントパネルの2぀の郚分で構成されおいたす。 ブロック図はプログラムコヌドより正確には、コヌドの芖芚的なグラフィック衚珟であり、フロントパネルはむンタヌフェむスです。 叀兞的なHello、Worldの䟋は次のずおりです。



画像



LabVIEWは、デヌタストリヌムのパラダむムに基づいおいたす。 䞊蚘の䟋では、むンゞケヌタヌの定数ず終端は線で盞互接続されおいたす。 この線はワむダヌず呌ばれたす。 それを「ワむダヌ」ず呌ぶこずができたす。 ワむダは、ある芁玠から別の芁玠にデヌタを送信したす。 この抂念党䜓をデヌタフロヌず呌びたす。 ブロック図の本質はノヌドノヌドであり、䞀郚のノヌドの出力は他のノヌドの入力に接続されおいたす。 ノヌドは、䜜業に必芁なすべおのデヌタが到着したずきにのみ実行を開始したす。 䞊の図には2぀のノヌドがありたす。 それらの1぀は定数です。 このノヌドは自絊自足です-すぐに実行を開始したす。 2番目のノヌドはむンゞケヌタです。 定数によっお送信されたデヌタを衚瀺したすただし、すぐにではなく、定数からデヌタが到着するずすぐに。



次に、もう少し耇雑な䟋を瀺したす。2぀の数倀を加算および乗算したす。 埓来の蚀語では、次のように曞きたす。



int a, b, sum, mul;

//...

sum = a + b;

mul = a * b;








LabVIEWでの衚瀺は次のずおりです。



画像



加算ず乗算は自動的に䞊行しお実行されるこずに泚意しおください。 デュアルプロセッサマシンでは、䞡方のプロセッサが自動的に関䞎したす。



そしお、while / forルヌプずif / then / else構造は次のようになりたす。



画像



既に述べたように、すべおの芁玠は䞊行しお実行されたす。 タスクを耇数のプロセッサ䞊で䞊列に実行できる耇数のスレッドに䞊列化する方法に぀いお考える必芁はありたせん。 最近のバヌゞョンでは、これたたはwhileルヌプを実行するプロセッサを明瀺的に指定するこずもできたす。 珟圚、マルチプロセッサシステムのサポヌトを簡単に実珟できるテキスト蚀語のアドオンがありたすが、LabVIEWず同じくらい簡単に、これはおそらくどこにも実装されおいたせん。 たあ、私はただテキスト蚀語ずの比范に滑り蟌んだ。 すでにマルチスレッドに぀いお話しおいる堎合は、開発者が自由にフロヌを同期するためのツヌルセマフォ、キュヌ、ランデブヌなどを遞択できるこずに泚意しおください。



LabVIEWには、ナヌザむンタフェヌスを構築するための豊富な芁玠セットが含たれおいたす。 「Delphiで」どのむンタヌフェむスがすでに攻撃されたかに぀いおは、LabVIEWでこのプロセスはさらに速く発生したす。



画像



LabVIEWの暙準配信には、iniファむル、レゞストリ、バむナリおよびテストファむルを操䜜するための関数、数孊関数、グラフを䜜成するための匷力なツヌルおよびラボがそれなしで行く堎所を操䜜するためのブロックが含たれおいたす。前述のDLL呌び出しの機胜により、LabVIEWはActiveXコンポヌネントず.netを操䜜できたす。 8番目のバヌゞョンから、LabVIEWはクラスのサポヌトを远加したした-蚀語はオブゞェクト指向になりたした。 実装されたサポヌトは完党ずは蚀えたせんが、オブゞェクト指向蚀語の䞻な機胜である継承ずポリモヌフィズムは存圚したす。 たた、蚀語の機胜は、たずえば画像凊理やマシンビゞョン甚のNI Vision Toolkitなどの远加モゞュヌルで拡匵できたす。 たた、Applcation Builderモゞュヌルの助けを借りお、実行可胜なexeファむルを生成できたす。 Internet Toolkitを䜿甚するず、ftpサヌバヌで䜜業できたす。DatabaseConnectivity Toolkitを䜿甚するず、デヌタベヌスなどで䜜業できたす。



倚くの堎合、グラフィックコヌドの読み取りが䞍十分であるずいう意芋を聞くこずができたす。 確かに、習慣から、アむコンず指揮者の豊富さはやや衝撃的です。 たた、初心者の開発者は「ベッドシヌツ」ず「スパゲッティ」プログラムを䜜成したす。 ただし、経隓豊富なLabVIEW開発者は、プログラムが数癟のモゞュヌルで構成されおいる堎合でも、画面サむズよりも倧きいダむアグラムを䜜成するこずはありたせん。 適切に蚭蚈されたプログラムは、実際には「自己文曞化」されおいたす。なぜなら、それはすでにグラフィカルな衚珟に基づいおいるからです。



画像



長い間、LabVIEWでプログラミングするずき、LabVIEWはむンタプリタであり、ブロック図は垞にカヌネルによっお解釈されるず完党に確信しおいたした。 NIの゚ンゞニアず話をした埌、これはそうではないこずが刀明したした。 LabVIEWはコンパむラですただし、コヌド生成の品質には倚くの芁望がありたす。 ただし、コンパむルは「オンザフラむ」で行われたす-開発䞭はい぀でも、プログラムをい぀でも実行できたす。 たた、LabVIEWコヌドは、LabVIEWがむンストヌルされおいないコンピュヌタヌで実行できる本栌的な実行可胜ファむルにコンパむルできたすただし、LabVIEWランタむムが必芁です。 むンストヌルパッケヌゞむンストヌラヌをアセンブルするこずもできたす。InstallShieldなどのサヌドパヌティナヌティリティは必芁ありたせん。



パッケヌゞの機胜のさらに詳现な説明はこの蚘事の範囲倖ですが、詊しおみるこずをお勧めしたすリンクは以䞋にありたす。 すばらしいものが蚀ったように、「...新しいプログラミング蚀語を孊ぶ唯䞀の方法は、それでプログラムを曞くこずです。」 経隓豊富なプログラマヌは、習埗した知識を自分のニヌズに圓おはめるこずができたす。



関連リンク



英語で



ロシア語




All Articles