17

ご容赦ください。これは言語論争でも炎上でもありません。本当の意見募集です。

場合によっては、従来のテキスト コーダーに LabVIEW (LV) での考え方を教えなければなりません。このプロセスの中で、LV がいかにひどいものかについて耳にすることがよくあります。この洞察が、「言語 X の方がはるかに優れている!」以外の合理的な観察を伴うことはめったにありません。この声明は彼らにとって満足のいくものですが、何が彼らを苛立たせているのかを理解するのに役立ちません.

では、LabVIEWテキスト言語の経験がある方は、LVの具体的などのような点に心を奪われますか?

------ まとめ -------

すべての答えをありがとう!一部の問題は以下のコメントで回答されています。一部は他のサイトに存在し、一部は LV の純粋な問題です。元の質問の精神で、ここでこれらすべてに答えようとするつもりはありません。LAVAまたはNIの Web サイトを確認してください。これらの多くが克服できることに驚くでしょう。

  • 意図しない同時実行
  • 従来のテキスト操作ツールへのアクセスなし
  • バイナリのみのソース コード管理
  • 分岐とマージが難しい
  • 開いているウィンドウが多すぎる
  • テキストの構文がより明確/明確/表現力豊かになっている
  • クリーンなコーディングには多くの時間と操作が必要です
  • 大規模でアクセスが困難な API/パレット システム
  • マウスが必要
  • ファイルの名前空間: メモリ内に同じ名前の重複ファイルはありません
  • LV オブジェクトはネイティブに値渡しのみです
  • コードを表示するには開発環境が必要です
  • ズーム不足
  • 起動が遅い
  • 記憶の豚
  • 「巨大な」コードは扱いにくい
  • UIのロックアップは簡単です
  • トラックパッドと LV がうまく混ざらない
  • 文字列操作はグラフィカルに肥大化しています
  • 限定的な UI カスタマイズ
  • 「隠された」プリミティブ (はい、存在します)
  • 公式のメタプログラミング機能の欠如 (ただし、それほど長くはありません)
  • Unicode サポートの欠如
4

19 に答える 19

12

LabViewには多くの点で感謝しています。特に、ハードウェアを簡単に駆動できる機能(もちろん、National Instrumentsのハードウェアの場合)と並行プログラミング機能に感謝しています。しかし、コードナビゲーションのテキストベースのプログラミング言語には不利です。

  • コードを参照すると、subVisを何度も何度も開いていくため、大量のウィンドウが開いてしまいます。
  • 単語はアイコンよりも表現力が強いため、特にpythonのような表現力豊かな構文では、テキスト言語と比較して1つの画面に表示される指示が少なくなります。
  • 他の言語でわかっているように、例外処理はありません。エラーは構造体で表され、あるVIから別のVIに転送され、VIごとにif error return; else do stuffコードを追加する必要があります。
  • エラーが発生したときにデバッグ中に停止する方法はありません
于 2009-01-11T19:11:34.660 に答える
12

LabVIEW は同時実行/並列プログラミングの実装をより簡単にします。ただし、デバッグ、テスト、または同時実行/並列処理についての検討が容易になるわけではありません。LabVIEW でバグのある並行コードを作成することはできますが、(他の言語、プラットフォーム、またはツールセットと同様に) 並行処理を「うまく機能させる」特効薬や魔法の杖はありません。

どちらかといえば、並行性についてもっと注意する必要があります。明示的に考えて宣言しないと、LabVIEW が予期していなかった並行処理を行う可能性があるからです。

その他のビーフ: テキストではありません。意味のある方法でデータフローを表現することは、グラフィカル言語を意味します。つまり、sed から emacs に至るまで、テキストを操作するために何十年も使用してきたツールを使用することはできません。また、ソース コード管理アプリは、コードをソース コードとしてではなく、不透明なバイナリとして扱う必要があることも意味します。これにより、分岐とマージが苦痛を伴います。

于 2009-01-07T15:31:13.897 に答える
8

Labview は、ハードウェアの制御に最適です。データ (さまざまなセンサーからのアナログ電圧) を収集し、ハードウェア (主に圧電モーター) を制御するための Labview アプリをいくつか作成しました。Labview を使用すると、複数のタスクを並行して簡単に実行できます。

今あなたの質問に答えます。Labview で不満に思っていることは何ですか。

  1. ブロック線図の整理にかかる時間

    • ワイヤーの移動
    • ノードの編成

    おそらく、私は独学なので、ワイヤーをきれいにして、ワイヤーが運んでいるデータとその行き先を解読しようとするのに多くの時間を費やしています.

  2. ブロックダイアグラムまたはフロントパネルに配置したいノード/関数を探して、ツールボックスのものをポイントしてクリックします。

必要な関数/メソッドの名前をパラメーターで入力して、代わりに開始できるはずです...

「うーん... RMS vi の計算が必要です。それはどこでしょうか?次に、AND 演算が必要です。トップ レベルに戻り、論理関数に戻ります。AND はどれですか?配線してテストしてください! 15 分しかかかりませんでした!."

しかし、Labview を使用するより効率的な方法があると思われますが、私はそれを知りません!

于 2008-12-16T20:53:43.837 に答える
7

1.LabVIEWオブジェクトは参照によって渡されません。
2.ブロックダイアグラムを表示するための他のビューアー (特に無料のもの) が存在しません。
3. プロジェクトを表示するために多数のウィンドウを開く必要があります。ウィンドウの数を減らすために、MDI にしたいと考えています。

于 2009-02-11T10:03:10.723 に答える
6

GUI での Unicode サポートの欠如

日本企業の開発を困難にしています。

更新:明らかに 8.6 でいくつかのサポートがあります。LabVIEWでUnicodeを使用するためのヒントとツールのリストを参照してください。

于 2009-12-08T04:41:37.150 に答える
6

私が最もイライラしたのは、キーボードから手を離したことです。私はタッチタイピストで、テキスト言語でかなり素早くコーディングできます。LabVIEW では、マウスを使用してメニューから VI とプログラム ノードを選択し、ノードを相互に配線する必要があります。グラフィカル環境で回路を設計することに慣れている電気技師にとって、これは非常に高速で便利ですが、コードを入力することに慣れている場合は面倒です。


開示: LabVIEW を最後に使用してから約 2 年が経過しているため、次の 2 つは修正される可能性があります。

次の煩わしさはソース管理でした。ソース管理リポジトリで最も頻繁に行うことの 1 つは、現在のバージョンを以前のバージョンと比較して変更を見つけることです。LabVIEW のようなグラフィカル言語では、これを行うことはできません。CVS や SVN などの一般的なリビジョン管理システムは、テキストベースの差分ツールをバックグラウンドで使用しています。ナショナル インスツルメンツが、まだ LabVIEW を使用しているすべての人のために、独自のリビジョン管理ソリューションを提供してくれることを願っています。

私が最後に悩まされたのは、実際のオブジェクト指向言語機能の欠如でした。私が使用した最後のバージョンである LabVIEW 6i は、せいぜいオブジェクトベースでした。それがオブジェクト指向であると正確に主張できる人は誰もいませんでした。継承を使用して実際のクラス階層を作成することはできませんでした。ポリモーフィズムは、いくつかの組み込み型に対してのみ予約されていました。6i は 2 バージョン前だったので、これが修正されることを切に願っています。

于 2008-12-16T21:12:34.393 に答える
5
  • 何十もの開いているウィンドウは確かに苦痛です。
  • より大きなモニターを使用している誰かによって編集された vi は、サイズを変更する必要があります。
  • 他のものを処理しているときにUIが一時的にロックする
  • トラックパッド付きのラップトップでの編集はひどいものです (小さなモニターの問題を忘れないでください)。
  • 複雑な文字列操作には何エーカーものスペースが必要です (方程式用の関数ノードがありますが、文字列操作用の正規表現ノードがないのはなぜですか?)
  • メニューのどこにも見つからない原始的なviを他の人々のコードで見つけることがあります。
  • UI は、ポイントにのみカスタマイズできます。

labview は非常に強力で、よく設計されていると思います。別の言語があればいいのにと思うようなことに出くわすことはめったにありません。

于 2009-05-20T22:19:36.230 に答える
4

差分とマージの欠如(「プロフェッショナル」ライセンスを除く)

仕事では SVN と TortoiseSVN を使用しています。ファイルで何が変更されたかを確認するために diff を実行できないことに不満を感じています。SVN を使用する場合、"差分" を実行することは日常的なワークフローの一部であるため、ファイルが変更されていることを確認するのはイライラしますが、それが些細なことなのか実質的なものなのかわかりません。diff を実行すると、変更の体系的なレビューも可能になります。

「プロ」にはある種の差分ツールがあると聞きました。ただし、「diff」機能には専門家が必要であることを経営陣に納得させるのは難しいでしょう。そして、それが実際に TortoiseSVN とスムーズに統合されているかどうかを判断することはできませんでした。

ソース管理の使用は業界のベスト プラクティスの 1 つと考えられているため、NI がベスト プラクティスの採用を妨げていると見なされないように、「プロフェッショナル」ライセンスだけでなく、NI がそれを完全にサポートすることは素晴らしいことです。

于 2009-01-23T00:24:47.087 に答える
4

個人的には、LabView は設計された目的に対して優れたプログラムだと思います。どの言語でも問題となるひどいコードの継承は別として、優れた実践により、あらゆる種類のプロセス制御、自動化、テスト、および測定システムを非常に効率的かつ迅速にまとめることができます。テキスト コーディングと同様に、LabView を使用した良い方法もあります。ごちゃごちゃした乱雑な VI がある場合、それは言語ではなくコーダーのせいです。テキストコード化された言語も非常に混乱する可能性があります.不必要に混乱したコードや難読化されたコードを作成しない責任はプログラマにあります.

将来の拡張を念頭に置いてコードを書き始めれば、煩雑になることなくプログラムのニーズに合わせて拡張できる VI を作成することはまったく難しくありません。短期的な視点でハッキングすると、悪いテキスト コードがすぐに混乱するのと同じように、それ自体が大きくなり、保守できなくなります。ただし、言語や IDE を学ぶのに時間をかける必要があるのと同じように、LabView を学ぶのに時間をかける必要があることを意味します。

LabView があなたの努力を挫折させるなら、プログラムを作成するために何か他のものを使用するか、少なくともプログラムのそれらのコンポーネントのために何か他のものを使用する必要がある可能性があります。

たとえば、多くの文字列処理を行う必要がある場合 (LabView の文字列関数をハックするのは便利ではありません) が、アプリケーションの本質に LabView を本当に使用したい、または使用する必要がある場合は、多くのオプションが用意されています。 . DLL は、C などの好きな言語で簡単にコーディングでき、LabView の DLL インターフェイスを介してこれらの関数にアクセスできます。これは、基本的なLabViewツールで実装するのが難しい、あらゆる種類の高レベルまたは抽象関数に当てはまります.

これには 2 つの大きな利点があります。1 つ目は、テキスト コーディングを単に関数やプロシージャの記述に集中できることです。関数を中心にアプリケーションを構築するタスクは存在しなくなります。これを LabView と組み合わせることで、LabView の迅速で強力な UI ビルダーと計測器の接続性という 2 つ目の利点が得られます。

ソース管理に関して、あなたができる最大のことは、LabView の固有のモジュール性能力を柔軟にすることです。たとえば、未知の継承されたコードを整理しようとするときなどに役立つテキストツールはありませんが、抽象的な方法で同じことの多くを実行できる非常に強力な機能が他にもあります。おそらくリファクタリングが最も簡単な言語です。つまり、一般に、継承されたコードのリファクタリングは、その機能を学習しているときに実行できます。

たとえば、データ ソースに移動してワイヤを切断すると、接続されていたすべてのものが即座に表示されます。エラー リストには、そのデータ ソースへの依存が原因で壊れたすべての完全なリストが表示され、LabView スパゲッティをクリーンアップするためのバンドルとクラスターの作成にすぐに取り組むことができます。背面パネルの破損したデータ接続も強調表示されるため、すべてがどこにあるのかを追跡できます. サブ VI がメイン プロセスを混乱させていることが明らかな場合は、サブ VI にすばやくカプセル化することができます。

これに対する大きな例外は、プログラムが多くの不要なグローバルを使用した場合です。驚き - グローバルは LabView でも物事を複雑にします。その場合、あなたを混乱させた愚か者を呪うしかありません。それでも、それは世界の終わりではありません。

要するに、私が言おうとしているのは、LabView は非常に異なる言語であるということです。イライラするように思われる場合、それは、テキスト コーディングで慣れ親しんだことを行うためのツールが存在しないからではなく、単純に、それらが根本的に異なる方法で実装されていることが多いためです。たとえば、コードを grep すること自体が目的ではなく、目的を達成するための手段にすぎません。目的は、プログラム全体のリンクと参照を発見することです。LabView コードを grep することはできませんが、リンクや参照を見つけることはできます。これはまったく異なる方法で行われます。曲線の学習。

于 2010-05-12T16:20:39.917 に答える
4

ブロックダイアグラムをズームインおよびズームアウトできない。はい、デザインは単一の画面に保持するか、一方向にのみスクロールする必要がありますが、開発に 50 インチのモニターを使用する必要があるサードパーティ ベンダーからコードを入手しました。コードはあらゆる方向に永遠に続きます!

(2009 年 1 月 23 日): [View] - > [Navigation Window ] を使用して、ダイアグラム全体 (フロント パネルとダイアグラム パネル) の鳥瞰図を表示します。これは、LabVIEW がブロックダイアグラムから作成された新しい制御器を前面のランダムな場所に配置することを決定した場合に役立ちます。

于 2009-01-06T17:34:14.883 に答える
3

機能の穴: 言及すべきメタプログラミング機能はありません。IIRC です。構築するものが何であれ、LV の設計者があなたが望むと考えたのと同じレベルの抽象化である限り、それはものを構築するのに最適です。

過去 20 年間、私は (一般的に) ますます高いレベルの抽象化に移行してきました。約1年、LVは自分が使っていたものより少し高いので、すっきりしていました。それから私はそれを吹き飛ばしました、そしてLVは毎年より時代遅れに見えます.

于 2009-05-20T22:43:23.217 に答える
3

コンピューターから rs232 デバイスを制御するプログラムを (C++ で) 作成しましたが、labview 用のドライバーまたは Vi などを提供するように求められました。私はすぐに何かを打ち出すことができるという完全な自信を持ってlabviewをダウンロードしました。(私はアイビー スクールを卒業したコンプ サイエンティストで、C++ で 15 年間プログラミングし、C、Scheme、C#、Java などを学び、使用してきました。これは簡単なことです)

サンプル アプリと labview のドキュメントもダウンロードしました。

私はその結果にぞっとしました。Labview は巨大で、遅く、直感的ではありません。MFC、Visio、Rational Rose、VB などで慣れ親しんだパラダイムには従いません。適切なドキュメントを探すのも苦労しました。どこから始めればよいかを知るには、Labview を理解する必要があるほどたくさんあります。

これだけのことを行う巨大なプログラムです。使い方を教えてくれる人がいなければ、とても難しいです。私は多くのことを独学で学びましたが、これまでのところ、labview は私を避けてきました。(確かに、必要なほど多くの時間を費やしていませんが、これまでのところイライラする経験でした)

要約すると、巨大で遅く、直感的ではありません。ドキュメントは圧倒的です。

(私はまだプロジェクトを完了する日を強く望んでいます)

于 2008-12-16T20:36:46.820 に答える
2

アジム、

フラストレーションを解消する 2 つの機能を備えたバージョン 8.6 に満足するでしょう。

  • Auto Clean up diagram
    雑然としたコードをクリーンアップするツール。
    ただし、このツールはクリーン コード ( LAVAおよびNI フォーラム) では使用しないでください。
  • クイック ドロップ
    キーボード ショートカットを使用してノードと VI を選択するためのツールです。YouTube のビデオで、クイック ドロップの動作を示しています。1:07 の後、Auto Clean Up ツールが表示されます。

ティム、それはどういう意味ですか

Labview は巨大で、遅く、直感的ではありません

例や改善点がある場合は、お知らせください。
ドライバーの作成に問題がある場合は、同梱されているドライバーを参照してください (たとえば、マルチメーターの場合)。ドライバーを備えた同様の計測器を見つけて、必要に応じて調整してみてください。NIが喜んであなたや他の人を助けてくれることは確かです. LAVAまたはNI フォーラムに質問を投稿してください。
LabVIEWが使用する別のパラダイム(データフロー)は、並列プログラミングの解決策になる可能性があります(少なくともNIが教えてくれることです)。Visioはプログラミング言語ではありません。ニュースを壊して申し訳ありません. 初心者向けの本 (LabVIEW for all) を使用することは、非常に良い出発点です。

トン

于 2008-12-27T09:20:43.647 に答える
2

LabVIEW初心者です。Photoshop のような (スペースバーを押したまま、左クリックしてドラッグする) マウスのパン機能は非常に直感的です。

于 2011-08-10T08:03:48.387 に答える
2

LabVIEWの「グラフィカル差分」に関する説明:

LabVIEW は、同じ名前の VI の複数のコピーをメモリ内に同時に持つことはできません。

バージョン 8.5 までは、My VI.vi リビジョン 2 をリビジョン 1 と比較したい場合、(手動で) 別の名前でコピーを作成し、それを開いて、LabVIEW にそれを私の VI.vi と比較するように指示する必要がありました。オリジナル。

私の理解では、彼らは 8.5 でこのプロセスをいくらか自動化し、ある種の 3 方向マージ ツールを提供しています。

于 2009-01-07T21:44:08.467 に答える
2

Labview は、大規模で複雑なソフトウェア プロジェクトのオーサリングに使用できます。Labview は、間違いなく構文ベースの言語よりもはるかに楽しく使用できます。labview を使用して、数学的に緻密な動的シミュレーションをプログラムしました。Labview の新しいバージョンには、特に複数のプロセッサを利用するための多くのエキサイティングな機能が含まれています。私はLabviewがとても好きです。しかし、私は誰にもお勧めしません。

残念ながら、単純な取得と表示以外では、これは絶対的な悪夢です。いつの日か、テキストベースの言語に代わる実行可能な言語と見なされるように十分に開発される可能性があります。しかし、NI の開発者は一貫して、labview を悩ませている 3 つの基本的な問題を無視することを選択してきました。

1) 不安定で、バグだらけです。labview サポート フォーラムには、まだ修正されていない何千ものバグが投稿されています。これらのいくつかは、メモリ リークや基本関数の数学的エラーなど、非常に深刻なものです。

2) ドキュメンテーションはひどいものです。多くの場合、ローカル ヘルプ ファイルで labview 機能のヘルプを探すと、詳細を見つけようとしている項目の名前を単に繰り返しているだけの孤独な文が見つかります。例: テクスチャ フィルタ モードの設定に関するヘルプ ファイルを参照すると、ヘルプ ファイルに「Texture Filter Mode - テクスチャ フィルタリングに使用するモードを選択します」としか書かれていません。ええ、ありがとう。それは物事を正しく片付けますよね?問題はそれよりもはるかに深刻です。多くの場合、ナショナルインスツルメントの技術担当者に labview 機能または数学関数の特定の動作に関する重要な詳細を提供するように依頼すると、彼らは自分のライブラリの関数がどのように機能するかを単純に知りません。これは誇張のように聞こえるかもしれませんが、そうではありません。

3) グラフィカル コードをクリーンに保ち、十分に文書化することは不可能ではありませんが、Labview はこれらのタスクを困難かつ非効率にするように設計されています。コードが絡み合って紛らわしいものにならないようにするために、定期的に (数回の操作ごとに) クラスタ、サブ vis、巨大なタイプ定義コントロール (大規模なプロジェクトでは複数の画面にまたがる可能性があります) などの構造を使用する必要があります。これらの構造はメモリを消費し、labview にメモリ内のデータの複数のコピーを強制的に作成させ、無償の操作を実行させることでパフォーマンスを低下させます。これらはすべて、グラフィック ダイアグラムが虹色のスパゲッティのように見えず、コメントやテキストが見えないようにするためです。labview でのプログラミングは、悪魔と戯れるようなものです。あなたの巨大なソフトウェア プロジェクトが、言葉のない壁サイズのフローチャートとして書かれていると想像してみてください。ここで、すべての線が互いに何千回も交差し、データ フローの追跡が完全に不可能になったと想像してください。labview でプログラミングする最も自然で効率的な方法を思いついたところです。

Labviewはクールです。Labview は新しいリリースごとに改善されています。ナショナルインスツルメンツが改良を続ければ、いつの日か汎用プログラミング言語として素晴らしいものになるでしょう。現時点では、大規模または論理的に複雑なプロジェクトのソフトウェア開発プラットフォームとしては、非常に悪い選択です。

于 2009-12-29T00:56:16.783 に答える
1

分岐とマージが難しい: diff は変更を分離するのにうまく機能しません。ケース構造の 1 つのケースの小さな変更が、多くの「違い」をもたらす可能性があります。私の知る限り、マージは手動で行う必要があります。

単純なロジックの構築に時間がかかる: 単純なロジックは配線や描画に多くの時間がかかる場合があり、変更したい場合はすべてを再描画する必要があります。

于 2012-05-02T06:16:58.527 に答える
0

Labview では、VI が最初に開かれていない場合、VI の呼び出し元を見つけることができません。

于 2012-03-22T09:18:55.353 に答える