Frage

Ich bin Teil eines high-school-Robotik-team, und es gibt eine Debatte darüber, welche Sprache zu verwenden, um das Programm unserer Roboter.Wir sind die Wahl zwischen C (oder auch C++ und LabVIEW.Es gibt Vorteile für jede Sprache.

C(++):

  • Weit verbreitet
  • Eine gute Vorbereitung für die Zukunft (die meisten Programmier-Positionen erfordern eine text-basierte Programmierer.)
  • Wir erweitern unser C-Codebasis aus dem letzten Jahr
  • Ermöglicht es uns, besser zu verstehen, was unser Roboter macht.

LabVIEW

  • Einfacher zu visualisieren Programmablauf (Blöcke und Drähte, statt der code-Zeilen)
  • Leichter zu lehren (Angeblich...)
  • "Die Zukunft des Programmierens ist die grafische." (So?)
  • Näher an der Robolab hintergrund, dass einige neue Mitglieder haben können.
  • Nicht brauchen, um Intim zu wissen, was Los ist.Einfach zu sagen, das Modul zu finden, den roten ball, brauchen nicht zu wissen, wie.

Dies ist eine sehr schwierige Entscheidung für uns, und wir haben für eine Weile diskutiert.Basierend auf den vor-für jede Sprache, und auf die Erfahrung, die Sie haben, was denkst du, was die bessere option ist? Beachten Sie, dass wir nicht notwendigerweise für pure Effizienz.Wir hoffen, dass wir bereiten unsere Programmierer für eine Zukunft in der Programmierung.

Auch:

  • Denken Sie, dass die grafische Sprachen wie LabVEIW sind die Zukunft der Programmierung?
  • Ist eine grafische Sprache einfacher zu lernen, als eine textuelle Sprache? Ich denke, Sie sollten ungefähr gleich schwierig zu lernen.
  • Wie wir sehen werden partailly verwurzelt in den Menschen hilft, zu lernen, wie viel sollten wir setzen auf vorgefertigte Module, und wie viel sollten wir versuchen so zu schreiben, auf unsere eigenen? ("Gute Programmierer schreiben guten code, großartige Programmierer Kopie große code." Aber ist es nicht Wert, ein guter Programmierer, der erste?)

Vielen Dank für die Beratung!


Edit:Ich möchte betonen diese Frage mehr:Der team-Kapitän meint, dass LabVIEW ist besser für Ihre Leichtigkeit des Lernens und Lehrens. Ist das wahr? Ich denke, dass C die gelehrt werden konnten genauso einfach, und die Anfänger-level-Aufgaben noch werden würde, um mit C.Ich würde wirklich gerne Ihre Meinung hören. Gibt es einen Grund, dass die Eingabe während{} sollte jede schwieriger als die Schaffung eines "während die box?" Ist es nicht gerade intuitiv dass das Programm fließt, Zeile für Zeile, nur modifiziert durch ifs und Schleifen, wie es ist intuitiv, dass das Programm fließt durch die Leitung, nur modifiziert durch ifs und Schleifen!?

Nochmals vielen Dank!


Edit:Ich erkannte, dass dies fällt unter das Thema "Sprache-Debatte." Ich hoffe, es ist okay, denn es geht darum, was das beste für einen bestimmten Zweig der Programmierung, mit der bestimmte Ziele zu erreichen.Wenn es nicht so ist...Tut mir Leid...

War es hilfreich?

Lösung

Bevor ich ankam, unserer Gruppe (Promovierte Wissenschaftler, mit wenig Programmier-hintergrund) hatte versucht, zu implementieren, eine LabVIEW-Anwendung, on-und-off für fast ein Jahr.Der code wurde so unordentlich, zu Komplex (front-und back-end) und am wichtigsten, hat nicht funktioniert.Ich bin ein begeisterter Programmierer, aber nie verwendet hatte, LabVIEW.Mit ein wenig Hilfe von einem LabVIEW-guru, der helfen könnte übersetzen die textliche progamming Paradigmen ich wusste, dass in LabVIEW-Konzepte war es möglich, code der app in einer Woche.Der Punkt hier ist, dass die basic coding concepts haben noch gelernt, die Sprache, sogar einer wie LabVIEW, ist einfach eine andere Art und Weise auszudrücken, Sie.

LabVIEW ist toll, für was es ursprünglich entwickelt wurde.d.h.Daten von DAQ-Karten, und display es auf dem Bildschirm vielleicht mit einigen kleinen Manipulationen in-zwischen.Aber auch die Programmierung algorithmen ist das nicht einfacher und ich würde sogar vorschlagen, dass es schwieriger ist.Zum Beispiel, in den meisten prozeduralen Sprachen die Reihenfolge der Ausführung ist in der Regel gefolgt Zeile für Zeile, mit pseudo-mathematischen notation (d.h. y = x*x + x + 1), während in LabVIEW implementieren würden diese mit einer Reihe von VI ' s, die nicht zwangsläufig Folgen von einander (D. H.von Links nach rechts) auf die Leinwand.

Außerdem Programmieren, wie eine Karriere ist mehr als die Kenntnis der Technik der Codierung.Lage, effektiv zu Fragen für Hilfe/Suche nach Antworten, schreiben Sie lesbaren code und die Arbeit mit legacy-code sind alle wichtigen Fähigkeiten, die unbestreitbar ist mehr schwierig, in eine grafische Programmiersprache, die wie LabVIEW.

Ich glaube, dass einige Aspekte der grafischen Programmierung können zum mainstream geworden - die Verwendung von sub-VIs verkörpert perfekt die "black-box" - Prinzip der Programmierung und wird auch in anderen Sprache Abstraktionen wie Yahoo Pipes und der Apple Automator - und vielleicht irgendwann in der Zukunft grafische Sprache wird revolutionieren die Art, wie wir das Programm aber LabVIEW selbst ist nicht eine massive paradigm shift in language design, wir immer noch haben while, for, if flow control, typecasting, ereignisgesteuerte Programmierung, auch Objekte.Wenn die Zukunft wirklich wird geschrieben in LabVIEW, C++ - Programmierer müssen nicht viel Mühe überqueren.

Als postcript ich würde sagen, dass C/C++ ist mehr in der Robotik geeignet, da die Schüler werden keinen Zweifel daran haben zu deal mit embedded-Systemen und FPGAs irgendwann.Low-level-Programmierung-Kenntnisse (bits, Register, etc.) wäre von unschätzbarem Wert für diese Art der Sache.

@Bettelorden Eigentlich LabVIEW ist eine Menge verwendet, in der Industrie, vor allem für control-Systeme.Gewährt NASA unwahrscheinlich es verwenden für die on-board Sat-Systeme, aber dann software-Entwicklung für Raum-Systeme ist eine ganz anderes Spiel...

Andere Tipps

Ich angetroffen habe eine etwas ähnliche situation in der Forschungsgruppe ich arbeite derzeit in.Es ist eine Biophysik-Gruppe, und wir verwenden LabVIEW alle über dem Platz für die Steuerung unserer Instrumente.Das funktioniert absolut großartig:es ist einfach zu montieren-eine Benutzeroberfläche zur Steuerung aller Aspekte Ihrer Instrumente, anzeigen, Ihren status und Ihre Daten zu sichern.

Und jetzt muss ich aufhören mich vom schreiben 5 Seite schimpfen, weil für mich LabVIEW wurde ein Alptraum.Lassen Sie mich stattdessen versuchen, das zusammenzufassen, was vor-und Nachteile:

Haftungsausschluss Ich bin nicht ein LabVIEW-Experte, ich könnte sagen, Dinge, die voreingenommen sind, veraltet oder schlicht falsch :)

LabVIEW Profis

  • Ja, es ist einfach zu erlernen.Viele PhDs in unserer Gruppe scheinen erworben zu haben genug Fähigkeiten, um zu hacken innerhalb von ein paar Wochen oder sogar noch weniger.
  • Bibliotheken.Dies ist ein wichtiger Punkt.Sie würde haben zu sorgfältig untersuchen Sie diese für Ihre eigene situation (ich weiß nicht, was Sie brauchen, wenn es gute LabVIEW-Bibliotheken für Sie, oder wenn es alternativen gibt, in den anderen Sprachen).In meinem Fall, finden, z.B., eine gute, schnelle charting-Bibliothek in Python hat ein großes problem, dass hat mich davon abgehalten, umschreiben einige unserer Programme in Python.
  • Ihre Schule kann schon installiert haben und ausführen.

LabVIEW Nachteile

  • Es ist vielleicht zu einfach zu erlernen.In jedem Fall scheint es, dass niemand wirklich die Mühe macht, zu lernen, best practices, also Programme, die schnell zu einem kompletten, nicht Durcheinander.Sicher, auch das ist gebunden zu passieren, mit text-basierten Sprachen, wenn Sie nicht vorsichtig sind, aber IMO ist es viel schwieriger, die Dinge richtig zu tun in LabVIEW.
  • Es neigen dazu, große Probleme in LabVIEW mit der Suche nach sub-VIs (sogar bis version 8.2, denke ich).LabVIEW hat seinen eigenen Weg, zu wissen, wo zu finden, Bibliotheken und sub-VIs, die macht es sehr einfach, vollständig zu brechen Ihre software.Das macht große Projekte ein Schmerz, wenn Sie nicht haben jemand da, der weiß, wie man damit umgehen.
  • Immer LabVIEW arbeiten mit Versionskontrolle ist ein Schmerz.Sicher, es kann getan werden, aber in jedem Fall würde ich unterlassen, mit dem built-in VC.Check-out LVDiff für eine LabVIEW-diff-tool, aber denken Sie gar nicht über das Zusammenführen.

(Die letzten zwei Punkte machen das arbeiten in einem team an einem Projekt schwierig.Das ist wahrscheinlich wichtig, in Ihrem Fall)

  • Das ist persönlich, aber ich finde, dass viele algorithmen, die einfach nicht arbeiten, wenn Sie programmiert sind visuell. Es ist ein Chaos.
    • Ein Beispiel ist das für Zeug ist streng sequentiellen;das bekommt umständlich ziemlich schnell.
    • Es ist schwierig, einen überblick über den code.
    • Wenn Sie die Nutzung von sub-VI ' s für die kleinen Aufgaben (wie es eine gute Praxis, um die Funktionen, die Sie durchführen, eine kleine Aufgabe, und das auf einen Bildschirm passen), können Sie nicht nur geben Ihnen Namen, aber Sie haben zu ziehen die Symbole für jeden von Ihnen.Das wird sehr ärgerlich und umständlich innerhalb von nur ein paar Minuten, so dass Sie sich stark in der Versuchung nicht setzen Sachen in einem sub-VI.Es ist einfach zu viel Aufwand.Btw:macht ein wirklich gutes Ikone kann eine professionelle Stunden.Gehen Sie versuchen, um einen einzigartigen, sofort verständlich, erkennbar Symbol für jedes sub-VI-du schreibst :)
  • Sie haben Karpal-tunnel innerhalb einer Woche.Garantiert.
  • @Brendan:hört, hört!

Abschließende Bemerkungen

Für deine "sollte ich schreiben, meine eigenen Module" Frage:Ich bin mir nicht sicher.Hängt von Ihrer Zeit.Verbringe nicht die Zeit auf das Rad neu erfinden, wenn Sie nicht haben, um.Es ist zu einfach Tage damit verbringen, auf das schreiben von low-level-code und stellen dann fest, Sie haben die Zeit ausgeht.Wenn das bedeutet, dass Sie wählen, LabVIEW, gehen Sie für es.

Wenn gäbe es einfache Möglichkeiten, um zu kombinieren LabVIEW und, z.B., C++, würde ich gerne davon hören:das kann Ihnen das beste aus beiden Welten, aber ich bezweifle es.

Aber stellen Sie sicher, dass Sie und Ihr team verbringen viel Zeit auf das lernen von best practices.Der sucht bei jedem anderen code.Von-einander-Lernens.Schreiben verwendbar, verständlichen code.Und Spaß haben!

Und bitte verzeihen Sie mir, klingende kantig und vielleicht etwas pedantisch.Es ist nur so, dass LabVIEW wurde ein real Albtraum für mich :)

Ich denke, die Wahl von LabVIEW oder nicht kommt darauf an, ob Sie lernen wollen, zu Programmieren, in eine allgemein verwendete Sprache als eine marktfähige Fähigkeit, oder wollen einfach nur, um Sachen erledigt werden.LabVIEW ermöglicht Sie zu Erhalten Sachen Getan, die sehr schnell und produktiv.Wie andere beobachtet haben, ist es nicht magisch befreien Sie davon ab, zu verstehen, was du tust, und es ist durchaus möglich, erstellen Sie ein unheiliges Durcheinander, wenn Sie nicht - obwohl anekdotisch, die schlimmsten Beispiele von schlechten codierungsstil in LabVIEW, sind in der Regel begangen durch Personen, die Erfahrung in einem text, Sprache und weigern sich, sich anzupassen, wie LabVIEW funktioniert, weil Sie bereits wissen, wie zu Programm, verdammt noch mal!'

Das ist um nicht zu implizieren, dass der LabVIEW-Programmierung ist keine marktfähigen Fähigkeiten, natürlich;nur, dass es nicht als Masse-Markt als C++.

LabVIEW macht es extrem einfach zu verwalten, verschiedene Dinge parallel, die können Sie haben in eine Roboter-control-situation.Race-Bedingungen im code, sollte sequentiell ist, sollte kein problem sein (d.h.wenn Sie sind, dann machst du es falsch ist):es gibt einfache Techniken, die dafür sorgen, dass die Sachen passiert, in der richtigen Reihenfolge wo notwendig - chaining subVI verwenden, die Fehler Draht oder andere Daten, die Verwendung von Meldern oder in Warteschlangen, den Aufbau einer state-machine-Struktur, auch mit Hilfe von LabVIEW die Sequenz-Struktur, falls erforderlich.Auch dies ist einfach ein Fall für die Zeit nehmen zu verstehen, die Werkzeuge zur Verfügung, die in LabVIEW und wie Sie funktionieren.Ich glaube nicht, dass das Haar in der Suppe zu haben, um das subVI Symbole ist sehr gut geleitet;Sie können sehr schnell mit ein paar Wörtern des Textes, vielleicht mit einer Hintergrundfarbe, und das wird in Ordnung sein für die meisten Zwecke.

"Sind graphische Sprachen, die den Weg der Zukunft" ist ein Roter Hering, basierend auf einer falschen Dichotomie.Einige Dinge eignen sich gut für grafische Sprachen (parallel code, zum Beispiel);andere Dinge, die Anzug text Sprachen viel besser.Ich erwarte nicht, dass LabVIEW und grafische Programmierung, um entweder Weg, oder nehmen Sie auf der Welt.

Übrigens, ich wäre sehr überrascht, wenn die NASA nicht die Verwendung von LabVIEW in der Raumfahrt.Jemand beschrieb kürzlich in der Info-LabVIEW-mailing-Liste, wie Sie mit LabVIEW zu entwickeln und zu testen die closed-loop control of flight Oberflächen betätigt durch Elektromotoren, die auf der Boeing 787 und gab den Eindruck, daß LabVIEW wurde ausgiebig in der Flugzeug-Entwicklung.Es ist auch verwendet für die Echtzeit-Steuerung in der Large Hadron Collider!

Die meisten aktiven Platz derzeit für weiter Informationen und Hilfe zu LabVIEW, abgesehen von National Instruments, der eigenen Website und in Foren zu sein scheint LAVA.

Dies beantwortet nicht Ihre Frage direkt, aber vielleicht möchten Sie erwägen eine Dritte Möglichkeit, mischen in eine interpretierte Sprache. Lua, zum Beispiel ist bereits verwendet in der Robotik.Es ist schnell, leicht im Gewicht und kann so konfiguriert werden, um laufen mit Festkomma-zahlen anstelle von floating-point-da die meisten mikrocontroller nicht über eine FPU. Her ist eine weitere alternative mit ähnlicher Nutzung.

Es sollte ziemlich einfach zu schreiben, ein thin interface layer in C und lassen Sie dann die Schüler lose mit interpretierten Skripten.Sie könnte auch set es up, so dass der code dynamisch geladen werden, ohne neu zu kompilieren und Flashen einen chip.Dies sollte reduzieren die iteration Zyklus und ermöglichen den Schülern, besser zu lernen, indem Sie sehen, Ergebnisse schnell.

Ich bin voreingenommen gegen mithilfe von visual tools wie LabVIEW.Ich immer scheinen zu schlagen, dass etwas nicht oder nicht ganz, wie ich es will.So bevorzuge ich die absolute Kontrolle, die Sie erhalten mit textuellen code.

LabVIEW andere Stärke (außer Bibliotheken) ist Parallelität.Es ist ein Datenfluss-Sprache, was bedeutet, dass die Laufzeit kann Griff die Parallelität für Sie.Also, wenn Sie etwas tun, das stark konkurrierenden und nicht wollen, zu tun, traditionellen Synchronisation, LabVIEW kann Ihnen helfen, es.

Die Zukunft gehört nicht in den grafischen Sprachen, wie Sie heute stehen.Es gehört zu wer kann kommen, mit einer Darstellung des Datenflusses (oder eine andere Parallelität-freundliche Art von Programmierung), die so einfach ist wie der grafische Ansatz ist, aber auch HIERFÜR gültigen durch den Programmierer eigene tools.

Es gibt eine veröffentlichte Studie zu dem Thema veranstaltet von National Instruments:

Eine Studie der Grafischen vs.Textuelle Programmierung für den Unterricht DSP

Es sieht speziell in LabVIEW versus MATLAB (im Gegensatz zu C).

Ich denke, dass die grafische Sprachen wil immer nur in der Expressivität im Vergleich zu textuellen lieben.Vergleichen Sie versuchen zu kommunizieren, in visuelle Symbole (z.B., REBUS oder Gebärdensprache), um die Kommunikation mit Worten.

Für einfache Aufgaben, über eine grafische Sprache ist meist einfacher, aber für komplexere Logik, ich finde, dass die grafische Sprachen in die Quere kommen.

Eine weitere Debatte, die stillschweigend in dieser Argumentation aber, die deklarative Programmierung vs.Imperativ.Deklarative ist in der Regel besser für etwas, wo Sie wirklich nicht brauchen, die eine fein abgestimmte Kontrolle über wie etwas gemacht wird.Sie können verwenden Sie C++ in einer deklarativen Weise, aber Sie müssten mehr arbeiten, nach vorne um es so zu machen, in der Erwägung, dass LABView ist als deklarative Sprache.

Ein Bild ist tausend Wörter Wert, aber wenn ein Bild ist tausend Wörter, die Sie nicht brauchen, und Sie kann das nicht ändern, dann in diesem Fall ein Bild ist wertlos.In der Erwägung, dass können Sie erstellen, die Tausende von Bildern mit Worten, die Angabe jedes detail und sogar führt die viewer der Fokus explizit.

LabVIEW können Sie schnell loslegen, und (wie andere schon gesagt haben) hat eine riesige Bibliothek von code für Sie verschiedene test, measurement & control Verwandte Dinge.

Die größte Untergang von LabVIEW, obwohl, ist, dass Sie verlieren alle tools, die Programmierer schreiben für sich.

Ihr code gespeichert ist, als VIs.Diese sind blickdicht, Binär-Dateien.Dies bedeutet, dass Ihr code ist wirklich nicht deins, es ist LabVIEW ist.Sie können nicht schreiben Sie Ihren eigenen parser, Sie können nicht schreiben Sie einen code-generator, Sie können nicht automatisierte änderungen, die über Makros oder Skripte.

Diese saugt wenn Sie haben eine 5000-VI app, die einige kleinere änderungen universell angewendet.Ihre nur option ist, gehen Sie durch jeden VI manuell, und der Himmel hilft Ihnen, wenn Sie verpassen eine änderung in einer VI abseits in einer Ecke irgendwo.

Und ja, da es Binär ist, können Sie nicht tun diff/merge/patch wie können Sie mit textuellen Sprachen.Dies gilt in der Tat machen die Arbeit mit mehr als einer version des Codes zu einem entsetzlichen Albtraum, der Wartbarkeit.

Mit allen Mitteln, die Verwendung von LabVIEW, wenn du etwas tust einfach, oder müssen einen Prototyp oder nicht plan zu erhalten Ihre code.

Wenn Sie wollen, um echte, beständige Programmierung, Verwendung einer textuellen Sprache.Sie werden möglicherweise langsamer erste Schritte, aber Sie werden schneller in die lange laufen.

(Oh, und wenn Sie brauchen, DAQ Bibliotheken, NI hat C++ und .Net-Versionen von denen, auch.)

Mein Erster post hier :) sanft ...

Ich komme aus einem hintergrund eingebettet in die automotive Industrie, und jetzt bin ich in der Rüstungsindustrie.Ich kann Euch aus Erfahrung sagen, dass C/C++ und LabVIEW sind wirklich unterschiedliche Tiere mit unterschiedlichen Zielsetzungen im Auge.C/C++ wurde für die embedded-Arbeit auf Mikrocontrollern, denn es war kompakt und Compiler/tools waren einfach zu kommen durch.LabVIEW auf der anderen Seite war, fahren die test-system (zusammen mit dem test stand, als einem Sequenzer).Die meisten test-Ausrüstung, die wir verwendeten, waren von NI so LabVIEW sofern eine Umgebung, in der wir die tools und die benötigten Treiber für die Aufgabe, zusammen mit der Unterstützung, die wir wollten ..

In Bezug auf die Leichtigkeit des Lernens, gibt es viele Ressourcen gibt, für C/C++ und viele Webseiten, Layout design überlegungen und ein Beispiel-algorithmen auf so ziemlich alles, was Sie danach sind frei verfügbar.Für LabVIEW, mit der Anwender-community ist wahrscheinlich nicht so vielfältig wie C/C++, und es dauert ein wenig mehr Aufwand zu inspizieren und vergleichen Sie in Beispiel-code ein (muss mit der richtigen version von LabVIEW etc) ...Ich fand LabVIEW ziemlich einfach zu pick-up und lernen, aber es gibt Störungen, wie einige hier erwähnt haben zu tun mit Parallelität und verschiedene andere Dinge, die erfordern ein wenig Erfahrung, bevor Sie bewusst werden.

So das Fazit nach all dem?Ich würde sagen, die BEIDEN Sprachen sind lohnt sich zu lernen, weil Sie wirklich tun, stellen zwei verschiedene Arten der Programmierung und es ist sicherlich lohnenswert, sich bewusst zu sein, und tüchtig an beide.

Oh mein Gott, die Antwort ist so einfach.Verwenden LabView.

Ich habe programmiert embedded-Systeme für 10 Jahre, und ich kann sagen, dass ohne mindestens ein paar Monate von Infrastruktur (sehr vorsichtig Infrastruktur!), werden Sie nicht so produktiv, wie Sie an Tag 1 mit LabView.

Wenn Sie entwerfen ein Roboter verkauft werden, und verwendet für das Militär, gehen Sie vor und beginnen Sie mit C - es ist ein guter Anruf.

Verwenden Sie andernfalls das system, dass ermöglicht Sie zu versuchen, die Vielfalt in die kürzeste Menge von Zeit.Das ist LabView.

Ich denke, dass die grafischen Sprachen die Sprache der Zukunft.....für alle, die ad-hoc-MS Access-Entwickler.Es wird immer einen Ort für die rein textliche Programmierer.

Persönlich, ich habe zu Fragen, was ist der wahre Spaß von Gebäude ein Roboter, wenn es ist alles für Sie getan?Wenn Sie legen Sie einfach ein 'finden Sie den roten ball' - Modul in es und beobachten Sie es gehen?Was für einen Sinn von stolz wird Sie für Ihre Leistung?Ich persönlich hätte nicht viel.Plus, was wird es dich lehren, der Codierung oder der (sehr wichtigen) Aspekt der hardware/software-Schnittstelle, die ist von entscheidender Bedeutung in der Robotik?

Ich behaupte nicht, ein Experte auf dem Gebiet, aber Fragen Sie sich, einer Sache:Denken Sie, dass die NASA verwendete LabVIEW-code, den Mars-Rover?Denkst du, dass jemand wirklich Prominente in der Robotik ist LabView?

Wirklich, wenn Ihr mich fragt, die einzige Sache, mit Ausstecher Dinge wie LabVIEW zu bauen, dies ist zur Vorbereitung gehen Sie für einige Hinterhof-Roboter-generator und nichts mehr.Wenn Sie wollen etwas, das Ihnen etwas mehr wie Industrie Erfahrung, bauen Sie Ihre eigenen 'LabVIEW'-Typ-system.Bauen Sie Ihre eigene finden-den-ball-Modul, oder Ihre eigenen "follow-the-line" - Modul.Es wird weitaus schwieriger sein, aber es wird auch mehr cool.:D

Ich Liebe LabVIEW.Ich würde wärmstens empfehlen, vor allem wenn der andere merkt verwendet haben etwas ähnliches.Es dauert eine Weile für den normalen Programmierer um sich daran zu gewöhnen, aber das Ergebnis ist viel besser, wenn Sie bereits wissen, wie zu Programmieren.

C/C++ entspricht verwalten Sie Ihren eigenen Speicher.Sie werden schwimmen im Speicher links und machen sich Gedanken über Sie.Gehen Sie mit LabVIEW und machen Sie sicher, Lesen Sie die Dokumentation, die mit LabVIEW und watch out für race-Bedingungen.

Eine Sprache zu lernen ist einfach.Lernen, wie man Programm nicht.Dies ändert sich nicht, auch wenn es eine grafische Sprache.Der Vorteil der Grafischen Sprachen ist, dass es einfacher ist, visuelle, was der code tun, anstatt dort zu sitzen und zu entziffern, eine Reihe von text.

Das wichtigste ist, nicht die Sprache, sondern die Programmierung Konzepte.Sollte es keine Rolle, welche Sprache Sie lernen, zu Programmieren, denn mit ein wenig Aufwand sollten Sie in der Lage, um das Programm auch in jeder Sprache.Sprachen kommen und gehen.

Haftungsausschluss:Ich habe nicht erlebt, LabVIEW, aber benutzt habe ich ein paar andere grafische Sprachen, darunter der WebMethods-Flow-und-Modeller, der dynamischen simulation Sprachen an der Universität und, äh, MIT ' s Scratch :).

Meine Erfahrung ist, dass die grafische Sprachen machen einen guten job der "Sanitär" ein Teil der Programmierung, aber diejenigen, die ich verwendet habe, aktiv in der Art der Algorithmik.Wenn Ihre algorithmen sind sehr einfach, das wäre OK.

Auf der anderen Seite, ich glaube nicht, dass C++ ist großartig für Ihre situation entweder.Sie verbringen mehr Zeit tracking down Zeiger und Speicherverwaltung, als Sie in nützliche Arbeit.

Wenn Ihr Roboter kann gesteuert werden mit einer Skriptsprache (Python, Ruby, Perl, was auch immer), dann denke ich, das wäre eine viel bessere Wahl.

Dann gibt es die hybrid-Optionen:

Wenn es keine scripting-option, die für Ihren Roboter, und Sie haben eine C++ - geek in Ihrem team haben, dann betrachten Sie, dass die geek-schreiben-Bindungen ordnen Sie Ihre C++ - Bibliothek, um eine scripting-Sprache.Dies würde es ermöglichen, Menschen mit anderen Spezialitäten zu Programm die Roboter mehr problemlos.Die Bindungen machen würde, eine gute Geschenk an die Gemeinde.

Wenn LabVIEW ermöglicht es, verwenden Sie die grafische Sprache zu ergründen zusammen Modulen geschrieben in einer textuellen Sprache.

Du bist in der High School.Wie viel Zeit haben Sie für die Arbeit an diesem Programm?Wie viele Menschen sind in Ihrer Gruppe?Kennen Sie C++ oder LabView bereits?

Aus deiner Frage sehe ich, dass Sie wissen, C++ und den meisten der Gruppe nicht.Ich vermute auch, dass der Anführer der Gruppe ist scharfsinnig genug, um zu bemerken, dass einige Mitglieder des Teams werden kann, eingeschüchtert durch eine text-basierend Programmierung Sprache.Dies ist akzeptabel, du bist in der high school, und diese Leute normies.Ich fühle mich, als ob normale Oberschüler werden in der Lage sein zu verstehen, LabView intuitiver als C++.Ich vermute, die meisten high-school-Studenten, wie die Bevölkerung im Allgemeinen, sind Angst von einer Befehlszeile.Für Sie gibt es viel weniger ein Unterschied, aber für Sie, es ist Nacht und Tag.

Sie sind richtig, dass die gleichen Konzepte können angewendet werden, um LabView-C++.Jeder hat seine stärken und Schwächen.Der Schlüssel ist die Auswahl der richtigen Werkzeug für den job.LabView wurde für diese Art von Anwendung.C++ ist viel allgemeiner, und kann angewendet werden, um viele andere Arten von Problemen.

Ich werde empfehlen LabView.Angesichts der richtigen hardware, Sie können werden und läuft fast out-of-the-box.Ihr team kann mehr Zeit zu verbringen bekommen Sie den Roboter zu tun, was Sie wollen, das , was der Schwerpunkt dieser Tätigkeit sein sollte.

Grafische Sprachen sind nicht die Zukunft der Programmierung;Sie haben eine der Möglichkeiten zur Verfügung, erstellt zum lösen bestimmter Arten von Probleme für viele Jahre.Die Zukunft des Programmierens ist die Schicht auf Schicht der Abstraktion, Weg von Computer-code.In der Zukunft werden wir uns Fragen, warum wir die ganze Zeit verschwendet Programmierung "Semantik" über und über.

wie viel sollten wir setzen auf vorgefertigte Module, und wie viel sollten wir versuchen so zu schreiben, auf unsere eigenen? Sie sollten keine Zeit damit verschwenden, das Rad neu erfinden.Wenn es sind Gerätetreiber zur Verfügung, die in Labview, die Sie verwenden.Sie können eine Menge lernen durch kopieren von code, die ist ähnlich in der Funktion und Anpassung an Ihre Bedürfnisse - Sie bekommen zu sehen, wie andere Menschen ähnliche Probleme gelöst, und interpretieren Ihre Lösung, bevor Sie richtig anwenden, um Ihre problem.Wenn Sie blind kopieren Sie den code, Chancen für Sie zu arbeiten, sind gering.Sie haben gut zu sein, auch wenn Sie code kopieren.

Viel Glück!

Ich schlage vor, Sie verwenden LabVIEW, wie Sie können zu machen die Roboter, was Sie tun möchten schneller und leichter.LabVIEW wurde mit diesem Geist.Natürlich ist C(++) sind große Sprachen, aber LabVIEW tut, was es soll, besser zu machen als alles andere.Die Leute können schreiben, wirklich gute software in LabVIEW als es bietet genügend Spielraum und Unterstützung für, dass.

Es ist eine riesige Sache, die ich negativ im Einsatz von LabVIEW für meine Anwendungen:Organisieren Sie die design-Komplexität.Als eines Physikers ich finde Labview-ideal für prototyping, instrument, Steuerung und mathematische Analyse.Es gibt keine Sprache, in dem Sie schneller werden und besser Ergebnis dann in LabVIEW.Ich verwendete LabView-seit 1997.Seit 2005 habe ich komplett ausgeschaltet, um die .NET-framework, da es ist einfacher zu entwerfen und zu pflegen.

In LabVIEW ist ein einfacher, 'wenn' Struktur hat, gezogen zu werden, und verwendet eine Menge von Raum auf Ihre grafische Gestaltung.Ich habe gerade herausgefunden, dass viele unserer kommerziellen Anwendungen waren schwer zu pflegen.Je komplexer die Anwendung wurde, desto schwieriger war es zu Lesen.

Ich verwende jetzt text laguages und ich bin viel besser in die Erhaltung alles.Wenn Sie vergleichen, C++, LabVIEW, würde ich mit LabVIEW, aber im Vergleich zu C# ist es nicht gewinnen

Wie immer, es hängt davon ab.

Ich bin mit LabVIEW ist seit über 20 Jahren und haben eine Recht große Art der Aufträge, von der einfachen DAQ sehr komplexen Visualisierung von Gerät steuert, um test-Sequenzer.Wenn es nicht gut genug war, ich sicher haben würde geschaltet.Das sagte, begann ich, Kodierung von Fortran mit Lochkarten und verwendet eine ganze Reihe von Programmiersprachen auf 8-bit - "Maschinen", angefangen mit Z80-Basis.Die Sprachen reichte von Assembler, BASIC, von Turbo-Pascal C.

LabVIEW war eine große Verbesserung, denn seine umfangreichen Bibliotheken für Daten, die Bilderfassung und-Analyse.Man hat jedoch, zu lernen, ein anderes paradigma.Und Sie brauchen definitiv einen trackball ;-))

Ich weiß nicht, etwas über LabView (oder viel über die C/C++), aber..

Denken Sie, dass die grafische Sprachen wie LabVEIW sind die Zukunft der Programmierung?

Nein...

Ist eine grafische Sprache einfacher zu lernen, als eine textuelle Sprache?Ich denke, Sie sollten ungefähr gleich schwierig zu lernen.

Leichter zu lernen?Nein, aber Sie sind leichter zu erklären und zu verstehen.

Zu erklären, eine Programmiersprache, die Sie haben, um zu erklären, was eine variable ist (was überraschend schwierig).Dies ist nicht ein problem mit flowgraph/nodal-coding-tools, wie die LEGO Mindstroms programming interface, oder Quarz-Komponist..

Für Beispiel, in dies ist ein ziemlich kompliziertes LEGO-Mindstroms-Programm - es ist sehr leicht zu verstehen, was Los ist in...aber was ist, wenn Sie wollen die Roboter zu führen INCREASEJITTER block 5-mal, dann fahren Sie nach vorne für 10 Sekunden, dann versuchen Sie die INCREASEJITTER Schleife wieder?Die Dinge beginnen immer unordentlich ist sehr schnell..

Quartz Composer ist ein großartiges Beispiel dafür, und warum ich glaube nicht, dass grafische Sprachen wird immer "die Zukunft"

Es macht es sehr einfach, wirklich Coole Sachen (3D-Partikel-Effekte, mit einer Kamera gesteuert durch die Durchschnittliche Helligkeit der Pixel von einer webcam)..aber unglaublich schwer zu tun einfache Dinge, wie die Iteration über die Elemente einer XML-Datei, oder zu speichern, dass die durchschnittlichen Pixelwert in eine Datei.

Wie wir sehen werden partailly verwurzelt in den Menschen hilft, zu lernen, wie viel sollten wir setzen auf vorgefertigte Module, und wie viel sollten wir versuchen so zu schreiben, auf unsere eigenen?("Gute Programmierer schreiben guten code, großartige Programmierer Kopie große code." Aber ist es nicht Wert, ein guter Programmierer, der erste?)

Für das lernen, es ist so viel einfacher, zu erklären und zu verstehen, eine grafische Sprache..

Das heißt, ich würde empfehlen, eine spezialisierte text-basierte Sprache Sprache als ein Fortschreiten.Für Beispiel, für Grafiken, die so etwas wie Verarbeitung oder NodeBox.Sie sind "normale" Sprachen (die Verarbeitung ist Java, NodeBox Python) mit sehr spezialisierten, einfach zu bedienen (aber absurd mächtig) frameworks verwurzelt in Ihnen..

Wichtiger ist, Sie sind sehr interaktiv Sprachen, die Sie nicht haben zu schreiben, Hunderte von Zeilen nur, um einen Kreis auf dem Bildschirm..Geben Sie einfach oval(100, 200, 10, 10) und drücken Sie die run-Taste, und es erscheint!Dies macht Sie auch sehr leicht zu zeigen und zu erklären.

Mehr Robotik-Verwandte, sogar so etwas wie LOGO wäre eine gute Einführung - geben Sie die "weiter 1" und der Schildkröte fährt nach vorn ein Kasten..Geben Sie "LINKS 90" und es dreht sich um 90 Grad..Dies bezieht sich auf die Realität sehr einfach.Sie können visualisieren, was die einzelnen Anweisungen machen wird, dann probieren Sie es aus und bestätigen es funktioniert wirklich so.

Zeigen Sie Schimmer auf der Suche, die Dinge, werden Sie pickup nützlichen Sachen, Sie würden lernen von C entlang der Weg, wenn Sie interessiert sind oder an den Punkt gelangen, wo Sie müssen eine "echte" Sprache, Sie ' ll haben alle, die wissen, anstatt in die syntax-Fehler und kompilieren brick-wall..

Es scheint, dass, wenn Sie versuchen, bereiten Sie unser team für eine Zukunft in der Programmierung mit C(++) ma die bessere route.Das Versprechen von Allgemeinen Programmiersprachen, die sind gebaut mit die visuelle Bausteine hat schien nie zu materialisieren, und ich bin Anfang zu Fragen, ob Sie das jemals wird.Es scheint, dass, während es kann getan werden, für bestimmte Anwendungsdomänen, sobald man in versuchen zu lösen viele Allgemeine Probleme, die bei einer textbasierten Programmiersprache ist schwer zu schlagen.

Zu einer Zeit hatte ich irgendwie kaufte sich in die Idee von executable UML, aber es scheint, dass, sobald Sie hinter dem Objekt-Beziehungen, und auch einige der Abläufe UML wäre ein ziemlich mühsamer Weg, um eine app zu erstellen.Vorstellen versuchen zu Draht es bis zu einer GUI.Ich würde nicht dagegen, als falsch erwiesen, aber bisher scheint es unwahrscheinlich, dass wir werden zeigen Sie und klicken Sie auf die Programmierung jederzeit bald.

Angefangen habe ich mit LabVIEW über 2 Jahren und nun ist er die ganze Zeit so vorgespannt sein, aber finde es ideal für Anwendungen, bei denen Datenerfassung und-Kontrolle beteiligt sind.

Wir verwenden LabVIEW-vor allem für die Prüfung, wo wir eine kontinuierliche Messung und Kontrolle der gas-Ventile und Aß Gehäuse.Dies umfasst sowohl die digitalen und analogen ein-und Ausgänge mit signal-Analyse-Routinen und Prozess-Steuerung alle, die von einem GUI.Durch den Abbau jedes Teil in subVIs wir sind in der Lage, zur Neukonfiguration des tests mit dem klicken und ziehen der Maus.

Nicht genau das gleiche wie C/C++, aber eine ähnliche Implementierung von mess -, Steuerungs-und Analyse mithilfe von Visual BASIC erscheint Komplex und schwer zu pflegen Vergleich.

Ich glaube, dass der Prozess der Programmierung ist wichtiger als die eigentliche Codierung der Sprache, und Sie sollten Folgen Sie den Stil-Richtlinien für eine grafische Programmiersprache.LabVIEW-Blockdiagramme zeigen den Datenfluss (Datenflussprogrammierung), so ist es sollte leicht zu erkennen sein potential race conditions obwohl ich hatte noch nie irgendwelche Probleme.Wenn Sie eine C-Codebasis, dann bauen Sie es in eine dll erlauben LabVIEW direkt aufrufen.

Es gibt definitiv Verdienste um beide Entscheidungen;da jedoch Ihre Domäne ist eine pädagogische Erfahrung, die ich denke, eine C/C++ - Lösung würde am meisten profitieren die Schüler.Die grafische Programmierung wird immer eine option, aber einfach nicht die Funktionalität in einer eleganten Art und Weise zu machen es mehr effizient zu bedienen sind als textuelle Programmierung für low-level-Programmierung.Dies ist nicht eine schlechte Sache - der ganze Punkt der Abstraktion ist es, ein neues Verständnis und die Sicht auf ein problem domain.Der Grund, warum ich glaube, dass viele enttäuscht werden können mit die grafische Programmierung ist jedoch, dass für eine bestimmte Programm, die inkrementelle Verstärkung im gehen von der Programmierung in C, die grafische ist nicht fast das selbe wie von Montage-C.

Kenntnisse der grafischen Programmierung profitieren würden alle zukünftigen Programmierer für Sie sicher.Es wird wahrscheinlich Chancen für die Zukunft erfordern nur die Kenntnisse der grafischen Programmierung und vielleicht haben einige Ihrer Schüler könnten davon profitieren, einige frühe Erfahrung mit es.Auf der anderen Seite, ein solides Fundament in grundlegenden Programmierung-Konzepte, die sich durch eine textuelle Ansatz profitieren alle von Ihren Schülern und doch sicherlich die bessere Antwort.

Der team-Kapitän meint, dass LabVIEW ist besser für Ihre einfache lernen und Lehre.Ist das wahr?

Ich bezweifle, dass gilt auch für jede einzelne Sprache, oder Paradigma.LabView könnte sicherlich einfacher sein für Menschen, die mit Elektronik-engineering-hintergrund;Programme in es ist "einfach" ziehen von Drähten.Dann wieder, wie Menschen, können bereits ausgesetzt sein, die Programmierung, als auch.

Ein wesentlicher Unterschied - abgesehen von der Grafik ist, dass die LV ist die Nachfrage beruhen (Fluss) - Programmierung.Sie starten vom Ergebnis und sagen, was notwendig ist, um es zu bekommen.Herkömmliche Programmierung neigt zwingend (geht auch andersherum).

Einige Sprachen bieten die beiden.Ich gestaltete ein multithreading-Bibliothek für Lua-kürzlich (Lanes), und es kann verwendet werden für demand-based programming in einer ansonsten zwingend Umgebung.Ich weiß, es gibt erfolgreiche Roboter laufen größtenteils in Lua gibt (Crazy Ivan Lua Oh Sechs).

Haben Sie schon einen Blick auf das Microsoft Robotics Studio?http://msdn.microsoft.com/en-us/robotics/default.aspx

Es ermöglicht die visuelle Programmierung (VPL):http://msdn.microsoft.com/en-us/library/bb483047.aspx als auch moderne Sprachen wie C#.Ich ermutige Sie, um wenigstens einen Blick auf die tutorials.

Meine Beschwerde gegen Labview (und Matlab in dieser Hinsicht) ist, dass, wenn Sie planen, auf die Einbettung der code in alles andere als x86 - (und Labview-Werkzeugen legen Labview-VIs auf den Armen), dann Sie haben zu werfen, wie viel PS das problem, wie Sie können, weil es ineffizient ist.

Labview ist ein großer prototyping-tool:viele der Bibliotheken, einfach zu string zusammen, blockiert, vielleicht ein wenig schwer zu tun, fortschrittliche algorithmen, aber wahrscheinlich gibt es einen block für das, was Sie tun möchten.Sie können erhalten Funktionen schnell gemacht.Aber wenn Sie denken, Sie können nehmen Sie, dass VI und legen Sie es auf einem Gerät, das du bist falsch.Zum Beispiel, wenn Sie eine adder block in Labview-Sie haben zwei Eingänge und einen Ausgang.Was ist die Speicherauslastung für, dass?Drei Variablen Wert von Daten?Zwei?In C oder C++ - wissen Sie, da kann man entweder schreiben z=x+y oder x+=y und Sie wissen genau, was Ihr code tut und wie der Speicher situation.Memory usage spike schnell vor allem, weil (wie andere haben darauf hingewiesen) Labview ist hochgradig parallel.So vorbereitet zu werfen, mehr RAM, als Sie dachten an das problem.Und mehr Rechenleistung.

Kurz gesagt, Labview ist ideal für rapid prototyping, aber Sie verlieren zu viel Kontrolle in anderen Situationen.Wenn Sie die Arbeit mit großen Mengen von Daten oder eingeschränkt Speicher - /Rechenleistung dann verwenden Sie einen text-basierend Programmierung Sprache, so dass Sie kontrollieren können, was vor sich geht.

Menschen, die immer zu vergleichen-labview-C++ und Tag "oh labview ist hohe, und es hat so viel gebaut in der Funktionalität, versuchen Sie die Erfassung von Daten zu tun eine dfft und Darstellung der Daten so einfach in labview versuchen, es in C++".

Mythos 1:Es ist schwer, alles getan zu bekommen mit C++ sein, weil es so niedrigen Niveau, und labview hat viele Dinge schon implementiert.Das problem ist, wenn Sie an der Entwicklung eines Robotik-system in C++ MÜSSEN Sie die Verwendung von Bibliotheken wie opencv , pcl ..ect, und Sie wäre sogar noch schlauer, wenn Sie ein software-framework konzipiert für den Aufbau von Robotik-Systemen wie ROS (robot operating system).Daher müssen Sie einen vollständigen Satz von Werkzeugen.Infact gibt es mehr high-level-Werkzeuge zur Verfügung, wenn Sie verwenden, ROS + python/c++ mit Bibliotheken wie opencv und pcl.Ich habe mit labview Robotik und ehrlich gesagt häufigsten verwendeten algorithmen, wie ICP gibt es nicht und es ist nicht wie kann man auch auf andere libraries leicht jetzt.

Myth2:Ist es einfacher zu verstehen, grafischen Programmiersprachen

Es hängt von der situation ab.Wenn Sie die Codierung ein komplizierter Algorithmus, der die grafischen Elemente nehmen wertvollen Platz auf dem Bildschirm und es wird schwierig sein, zu verstehen, die Methode.Um zu verstehen, labview-code, den Sie Lesen müssen, um über einen Bereich, der O(n^2) Komplexität im code, den Sie gerade Lesen, von oben nach unten.

Was ist, wenn Sie parallel systems.ROS implementiert eine Graphen-basierte Architektur basiert auf den Anwender/publisher-Nachrichten implementiert callback-und es ist ziemlich einfach, mehrere Programme ausgeführt werden und die Kommunikation.Einzelne parallele Komponenten getrennt macht es einfacher zu Debuggen.Zum Beispiel Durchlaufen parallel labview-code ist ein Albtraum, weil Kontrollfluss springt form einem Ort zum anderen.In ROS, die nicht explizit 'ziehen Ihre archietecture wie in labview, jedoch kann man Sie noch sehen mein Befehl ros führen rqt_graph ( die alle angeschlossenen Knoten)

"Die Zukunft des Programmierens ist die grafische." (So?)

Ich hoffe nicht, dass die aktuelle Implementierung von labview nicht erlauben die Kodierung von text-basierten Methoden und graphische Methoden.( es ist mathscript , dies ist jedoch unglaublich langsam)

Seine schwer zu Debuggen, da Sie nicht verstecken die Parallelität leicht.

Seine schwer zu Lesen labview-code, weil es Sie zu schauen, um so viel Fläche.

Labview ist ideal für Daten, aq und signal-Verarbeitung aber nicht experimentelle Robotik, denn die meisten der high-level-Komponenten wie SLAM (simultane Lokalisierung und mapping), point cloud registration, point cloud processing ect fehlen.Auch wenn Sie tun, fügen Sie diese Komponenten und Sie sind einfach zu integrieren, wie in ROS, da labview proprietäre und teure, die Sie nie halten mit der open-source-community.

In Zusammenfassung, wenn labview ist die Zukunft für Mechatronik, ich bin die änderung meiner Laufbahn im investment banking...Wenn ich keine Freude an meiner Arbeit kann ich da auch etwas Geld zu verdienen und sich früh schlafen legen...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top