welche Programmiersprache? Im Unterforum Grundlagen - Beschreibung: Grundlagen und Fragen für Einsteiger in der Elektronik
Autor |
welche Programmiersprache? |
|
|
|
|
BID = 608359
DrZoidberg Stammposter
Beiträge: 277
|
|
Kommt drauf an was du machen willst.
Für µController ist C natürlich die beste Wahl.
Aber wenn du keinen wirklich guten Grund dafür hast, solltest du lieber die Finger von C++ lassen. Das ist eine veraltete Sprache. Zu umständlich und ineffizient. Lern lieber eine moderne Sprache wie C#. Es ist leichter zu erlernen und das Programmieren ist leichter und schneller. Noch schneller geht es mit Visual Basic. Es hat zwar einen schlechten Ruf unter Programmierern, die "professionellere" Sprachen benutzen, aber es hat sich in den letzten 10 Jahren stark verändert und ist inzwischen eine relativ moderne Sprache geworden.
Im TIOBE Index (Liste der populärsten Programmiersprachen) ist es relativ weit oben und das aus gutem Grund. Für die meisten Leute ist es die beste Wahl, um Windows Anwendungen möglichst schnell und einfach zu erstellen. Es ist inzwischen auch für sehr anspruchsvolle Projekte geeignet, da es fast alle wichtigen modernen Features enthält.
Sieh die mal die Seite hier an
http://www.microsoft.com/germany/express/product/default.aspx
Dort bekommst du kostenlose Versionen von Visual Basic, Visual C#, und Visual C++. Es gibt dort auch Tutorial Videos und Foren. |
|
BID = 608447
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Zitat :
|
Aber wenn du keinen wirklich guten Grund dafür hast, solltest du lieber die Finger von C++ lassen.
|
Das würde ich nicht ansatzweise unterschreiben.
Auch wenn diese Krankheiten aus Redmond zunehmen, sind sie nicht dazu geeignet, Mikrokontrollerprogramme oder Betriebssysteme zu entwickeln. Ich überlege mir grade, wie man mit diesem Gedöns einen Bootloader mit weniger als 400 Byte Länge schreiben soll (dazu vewendet man sowieso entweder Assembler oder C).
Zitat :
| Das ist eine veraltete Sprache. Zu umständlich und ineffizient. |
Genau, weil sie so alt ist wird auch immer noch an ihr gearbeitet... Bitte erkläre mir mal, wie du auf diese Idee kommst.
Systeme wie Symbian OS und andere hochmoderne Dinge sind in C++ kodiert worden.
Zitat :
| Es ist leichter zu erlernen und das Programmieren ist leichter und schneller. Noch schneller geht es mit Visual Basic. Es hat zwar einen schlechten Ruf unter Programmierern, die "professionellere" Sprachen benutzen, aber es hat sich in den letzten 10 Jahren stark verändert und ist inzwischen eine relativ moderne Sprache geworden. |
Ich hatte mich mal mit einem Programmierer unterhalten, als ich so um die 12 war. Ich erzählte ihm, dass ich mit VB arbeiten würde. Er hat laut gelacht und wir wechselten das Thema. Er hat damit übrigens Geld verdient, was also kein Hobbyprogrammierer.
Und ob man eine Sprache schnell erlernt oder nicht spielt kaum eine Rolle. Man soll sie effizient einsetzen können und da kann von VB keine Rede sein.
Zählen tut, ob das Programm schnell und sicher läuft, nicht wie schnell es programmiert wurde. Das bringt meistens nur Probleme mit sich.
Auf deiner Liste sind C und C++ übrigens vor VB. Und das aus gutem Grund
Es gibt halt nicht nur Windows, zum Glück. Unter unixioden Systemen gibt es kein Basic, dort läuft alles über C und C++ sowie perl, python, ruby und shell scripts. Auch Java ist häufig. Aber kein .NET-Gefummel (noch nicht. ist ja geplant.)
Edit: Also, ich will deinen Beitrag in keinster Weise schlecht machen. Aber ich kann ihn halt nicht in allen Punkten nachvollziehen.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 17 Mai 2009 19:32 ] |
|
BID = 608468
DrZoidberg Stammposter
Beiträge: 277
|
Zitat :
DonComi hat am 17 Mai 2009 19:27 geschrieben :
|
Auch wenn diese Krankheiten aus Redmond zunehmen, sind sie nicht dazu geeignet, Mikrokontrollerprogramme oder Betriebssysteme zu entwickeln. Ich überlege mir grade, wie man mit diesem Gedöns einen Bootloader mit weniger als 400 Byte Länge schreiben soll (dazu vewendet man sowieso entweder Assembler oder C).
|
Ich hatte den Eindruck, dass Sebra keine Betriebssysteme schreiben wollte, sondern nur ganz einfache Windows Anwendungen. Dass man für einen µController C nehmen sollte, habe ich nie bestritten.
Zitat :
|
Zitat :
| Das ist eine veraltete Sprache. Zu umständlich und ineffizient. |
Genau, weil sie so alt ist wird auch immer noch an ihr gearbeitet... Bitte erkläre mir mal, wie du auf diese Idee kommst.
|
Durch seine Hardwarenähe ist C++ gut zum Schreiben von Betriebssystemen geeignet. Aber gerade diese Hardwarenähe macht das Schreiben von normalen Anwendungsprogrammen unnötig kompliziert und fehleranfällig. Dadurch steigt der Aufwand und das ist unproduktiv.
Zitat :
|
Ich hatte mich mal mit einem Programmierer unterhalten, als ich so um die 12 war. Ich erzählte ihm, dass ich mit VB arbeiten würde. Er hat laut gelacht und wir wechselten das Thema. Er hat damit übrigens Geld verdient, was also kein Hobbyprogrammierer.
|
Wie ich schon sagte, hat sich VB in den letzten 10 Jahren stark verändert. Übrigens sind nicht alle Leute, die als Programmierer ihr Geld verdienen, auch Experten in Sachen Programmiersprachen.
Zitat :
|
Und ob man eine Sprache schnell erlernt oder nicht spielt kaum eine Rolle. Man soll sie effizient einsetzen können und da kann von VB keine Rede sein.
|
Kommt drauf an was genau man mit "effizient" meint.
Das schnelle Erlernen einer Sprache kann durchaus von Bedeutung sein, wenn z.B. jemand in seinem ganzen Leben nur ein paar wenige simple Programme schreibt, dann lohnt sich der Aufwand einfach nicht.
Zitat :
|
Zählen tut, ob das Programm schnell und sicher läuft, nicht wie schnell es programmiert wurde. Das bringt meistens nur Probleme mit sich.
|
Genau. Sicherheit und Fehlerfreiheit sind wichtig. Und diese beiden Dinge gehören nun wirklich nicht zu den Stärken von C++.
Dafür nimmt man besser modernere Sprachen, wie Java, C# oder Ruby.
Bei der Geschwindigkeit gibt es übrigens keine großen Unterschiede, ausser bei Ruby. Aber Java .Net und (mit -O2 kompilierte) C++ Programme laufen in der Regel ungefähr gleich schnell. Und jetzt behaupte bitte nicht Java sei langsam, weil Swing langsam ist. Swing ist lediglich eine API. Man muss sie nicht verwenden. Es gibt auch Alternativen.
Vor über 10 Jahren war ich auch der Meinung, dass C und Assembler die effizientesten Sprachen sind. Ich wollte nicht mal mit OO Sprachen arbeiten, weil mir das unnötig und ineffizient erschien. Irgendwann habe ich aber gemerkt, dass minimale Programmgröße und maximale Geschwindigkeit, in den allermeisten Fällen völlig unwichtig ist. Wichtig sind
-hohe Sicherheit,
-möglichst wenige Fehler
-schnelle Programmentwicklung
-gute Skalierbarkeit
usw.
Deshalb werden auch die meisten Serveranwendungen in Java geschrieben.
|
BID = 608473
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Moin,
Zitat :
| Durch seine Hardwarenähe ist C++ gut zum Schreiben von Betriebssystemen geeignet. Aber gerade diese Hardwarenähe macht das Schreiben von normalen Anwendungsprogrammen unnötig kompliziert und fehleranfällig. Dadurch steigt der Aufwand und das ist unproduktiv. |
C++ ist dank diverser Programmierparadigmen nicht zwingend hardwarenah. Sicher kann man in C++ sehr hardwarenah programmieren, dann aber mehr oder weniger im C-Stil. C++ bedeutet eigentlich immer, klassenorientiert zu programmieren, also objektorientiert. Natürlich kann ich damit noch generisch programmieren. C++ ist einfach zu umfangreich, als es als veraltet und ineffizient zu bezeichnen. Jeder, der C++ (freiwillig) nutzt, ist sich dessen Stärken vollstens bewusst (und auch den Schwächen, z.B. die Sachen mit den Typen.. )
Außerdem ist C++ wesentlich sicherer als C. Wer schonmal böse Pufferüberläufe in C-Programmen (verursacht ) hatte, weiß, was ich meine.
Bei VB (ich kann 6.0 Enterprise noch so gut wie auswendig, ich weiß also exakt, worüber ich rede!) nervt mich schon, dass die simpelsten Dinge implizit passieren, z.B. Zeiger. Ich kann zwar bspw. Argumente explizit als Referenz bzw. Zeiger überreichen, aber das wars dann auch im Großen und Ganzen schon. Wenn ich mir da überlege, was man allein mit diesen tollen Zeigerarithmetiken in C oder auch C++ (wo man eher auf Referenzen oder intell. Zeiger zählt) machen kann, wird mir warm ums Herz .
Zitat :
| Das schnelle Erlernen einer Sprache kann durchaus von Bedeutung sein, wenn z.B. jemand in seinem ganzen Leben nur ein paar wenige simple Programme schreibt, dann lohnt sich der Aufwand einfach nicht. |
Da gebe ich dir allerdings völlig Recht. Ein Anfänger muss keine sonderlich effizienten, schnellen, kleinen, portable, etc. Programme schreiben. Für ihn zählt bloß die Funktion.
Ich behaupte auch nicht, dass Java langsam sei. Java ist nett, weil man es sowohl komplett Host-interpretiert (also plattformunabhängig) als auch völlig kompilierbar anwenden kann. Durch das Interpretieren geht kaum Zeit flöten, da ein recht effizienter Bytecode eingesetzt wird. Java ist toll, in den Bereichen, wo es auch die Anwendung rechtfertigt.
Ich bin bei weitem nicht gegen moderne(re) Sprachen, die z.B. rein scriptbasiert sind, im Ggs. zu C und C++. Heutige Rechner sind teils so enorm schnell, dass es keine Unterschiede mehr gibt (augenscheinlich und mit Bauchgefühl). Aber rate mal, in welchen Sprachen die Interpreter bzw. die Layer unter den Scripten, die Engines zum Interpretieren, implementiert sind... .
P.S.: möglichst wenig Fehler ist immer wichtig .
Beim Scripting merkt man u.U. erst zur Laufzeit, dass etwas nicht stimmt. Bei C++ meckert bei syntaktischen Fehlern der Kompiler sofort. Auch grobe Dummheit erkennt er oft. Logische Fehler, prinzipbedingt, nicht. Wie in allen anderen Sprachen auch.
Also, ich denke, wir sind uns in einigen Teilen einig, z.B.:
Anfänger sollten, wenn sie nicht beabsichtigen, tiefer in die Materie einzusteigen und eventuell mal die Programme unter ein andere OS zu hieven, zu möglichst einfachen Sprache greifen. Ich gebe ja zu, dass ich die MFC absolut nicht leiden kann. Da ist es wirklich einfacher, mal eben VB zu staten und eine Form zu zaubern. Ohne eine Zeile Code.
(Machen tu ich das nicht. Ich nutze seit längerem Qt, sowohl für linux als auch, wenns denn sein muss, Windows.)
_________________
[ Diese Nachricht wurde geändert von: DonComi am 17 Mai 2009 22:38 ]
|
BID = 608785
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Zitat :
DrZoidberg hat am 17 Mai 2009 21:57 geschrieben :
|
Bei der Geschwindigkeit gibt es übrigens keine großen Unterschiede, ausser bei Ruby. Aber Java .Net und (mit -O2 kompilierte) C++ Programme laufen in der Regel ungefähr gleich schnell. Und jetzt behaupte bitte nicht Java sei langsam, weil Swing langsam ist. Swing ist lediglich eine API. Man muss sie nicht verwenden. Es gibt auch Alternativen.
(...)
Deshalb werden auch die meisten Serveranwendungen in Java geschrieben.
|
Da muss ich jetzt aber auch widersprechen. Bisher liefen alle Java-basierten Anwendungen bei mir langsamer als solche in C bzw. C++. Ich kenne mich mit Java nicht näher aus und kann nicht sagen, welche API besser oder schlechter ist, aber wenn ich etwas mit Java in Verbindung bringen kann, dann, dass sie nicht schnell sind. Und besonders portabel zwischen den OSen sind auch lange nicht alle.
Und welche Art "Serveranwendung" meinst du überhaupt? Webserver? DNS-Server? Firewall? File-Server? Mail-Server? Alles mit Vorzeige-Produkten der Linux-Schiene machbar und nix Java!
VB hat sich zwar weiterentwickelt, aber die anderen Sprachen auch. Ich bin ebenfalls mit VB6.0 ausgestiegen, unter anderem weil mir die Sprache einfach zu viel Plug&Play ist. C++ (auch 6.0) auf Windows kenne ich hauptsächlich aus der Berufsschule mit MFC und ich habe es gehasst. C# wäre da zwar schön gewesen, aber der Lehrplan ist eben seit dem es den Beruf Fachinformatiker gibt nicht geändert worden (ca. 10 Jahre).
Ich arbeite mich gerade für mein aktuelles Hobbyprojekt in die Sprachen C für AVR, C++ für den Daemon (=Server) und die GTK-Module für Perl für den Client ein. (in dieser Reihenfolge)
Man sollte eine Programmiersprache nicht nach dem beurteilen, was aus Redmond kommt.
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 608798
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Moin,
Ich glaube, mit "Server" meinte er hostinterpretierte Scripte, wie sie hier z.B. auch laufen. Das kann man aber nicht mit Sprachen vergleichen, welche dazu da sind, lauffähigen Maschinenkode zu erzeugen.
Deshalb kann ich zum Beispiel auch Leute nicht verstehen, die C++ und php vergleichen. Das ergibt keinen Sinn, da die Anwendungsbereiche unterschiedliche sind.
Zumal viele Interpreter, zum Beispiel der von Apache, welcher ja auch seit längerem php unterstützt, in C++ geschrieben wurden.
Wie dem auch sei, alles hat seine Berechtigung, im jeweiligen Bereich.
@Clembra:
Wenn du vorhast, einen Server zu schreiben, den du dann daemonisieren willst ( ) würde ich zu C greifen. Zum Daemon machst du das Programm ganz einfach durch den fork-Aufruf und anschließendes Killen des Elternprozesses. Schon ist die Shell wieder frei und der Prozess läuft komplett im Hintergrund.
Auch die Socketpogrammierung ist ziemlich einfach.
Ich habe da auch schon etliche Sachen gemacht. Aktuell grade zum Beispiel den Prototypen für einen IR-USB-Stick, welcher den X-Server steuert. Ich kann damit z.B. Tastendrücke im System auslösen, Tastenkombinationen durch Drücken einer beliebig programmierbaren Fernbedienungstaste (geschiet durch eine Config-Datei) auslösen oder auch in der shell Aktionen ausführen.
Weiterhin ist der Kram auch netzwerktransparent steuerbar. Alles in C.
Der IR-Dekoder ist in einem mega48 implementiert (TQFP).
Das Ganze unter Windows wäre die reinste Quälerei...
_________________
|
BID = 608875
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Seine Definition von Server ist mir im Nachhinein auch eingefallen, aber da war die Edit-Zeit schon abgelaufen. Wobei es auch dann nicht die meisten sind, sondern laut meiner Erfahrung und einer mal im Netz gefundenen Statistik ist PHP an Platz 1. Dazu kommen die speziellen Server, die mit eigenen Webservern in C++, C# oder Bla.NET geschriebenen. ASP und Perl sind natürlich auch nicht zu vergessen.
Offtopic :
| Ob ich für den Daemon C oder C++ verwenden werde ist noch nicht ganz raus. Erstmal ist der AVR dran und dafür wird eine Mischung aus C und Asm benutzt. Nur Assembler ist mir zu viel Arbeit. |
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 608925
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Nunja, aber php wird serverseitig interpretiert, Java clientseitig. Natürlich kann es auch serverseitig interpretiert werden.
Achja, nicht zu vergessen: VBS
Offtopic :
| Dann viel Erfolg bei deinem Projekt. |
_________________
|
BID = 608973
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Offtopic :
| Du meist hier die Java-Applets, am besten Bekannt als ätzende Ladebalken für Blink-Blink. Das und JavaScript wird im Browser des Client abgespielt. Es gibt aber auch Anwendungen, die in Java geschrieben auf dem Server laufen, auf dem Client macht ein JavaScript dann meistens irgend welche AJAX-Aufrufe. Für solche Zwecke gibt es z.B. den Apache Tomcat, der Java-Webanwendungen zur Verfügung stellen kann. |
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 609018
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Offtopic :
| Jo, das meinte ich mit einem Satz . Cleint- und Serverseitig eben |
_________________
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 29 Beiträge verfasst © x sparkkelsputz Besucher : 182425009 Heute : 4054 Gestern : 5459 Online : 375 29.11.2024 19:32 3 Besucher in den letzten 60 Sekunden alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0401749610901
|