[Sammelthread] Programmierung - Fragen / Ideenaustausch / Weiterbildung / Labern

Furgy

Banned
Thread Starter
Mitglied seit
16.10.2005
Beiträge
5.662
Ort
Ostschweiz
Hardwareluxx Programmierung Sammelthread
Fragen / Ideenaustausch / Weiterbildung / Labern


Einleitung

In diesem Sammelthread geht es nicht darum, was eine Programmiersprache ist oder wie diese funktionieren - dafür gibt es andere Quellen. Es geht auch nicht darum, sich zu streiten, welche Programmiersprache besser ist, da man dies allgemein nicht sagen kann. Es gibt keine "beste Sprache". Jede hat sein Anwendungsgebiet und jede Sprache hat Vor- und Nachteile.

In diesem Thread kann zum Beispiel diskutiert werden über Programmiertechniken und andere Dinge, die bestimmte Sprachen betreffen.
Natürlich können hier auch Informationen gesammelt und ausgetauscht werden. Natürlich können auch Probleme beschrieben werden, da 4 oder noch mehr Augen mehr sehen, als 2 (und wer den Code selber geschrieben hat, sieht die Fehler irgendwann sowieso nicht mehr).

Hier dürfen auch Fragen von Einsteigern und Umsteiger kommen, um simple Fragen wie "Welches ist die beste Programmiersprache um anzufangen?" zu beantworten.


Welche verbreiteten Programmiersprachen gibt es?

C
C eine sehr weit verbreitete Programmiersprache und ist auf fast allen System verfügbar und ist wohl die Programmiersprache. C wird für Anwendungs- und Systemprogrammierung verwendet. Viele Kerne und Standardprogramme von UNIX-Ähnlichen Betriebssysteme sind in C geschrieben. C hat etwas, was sonst nur C++ aufweist: Die Fähigkeit der Pointer. Pointer sind ein mächtiges, aber auch gefährliches "Werkzeug".

C wird für Hardwarenahe Dinge verwendet, z.B. Treiber. Grössere Projekte sind mit C extrem aufwendig, da C nicht Objektorientiert arbeitet.

Vorteile:
- Hardwarenah
- Strukturiert

Nachteile:
- Die Syntax ist nicht gerade Anfängerfreundlich
- Pointer (ein Fluch und ein Segen in einem)
- Für grössere Projekte ungeeignet

C++
C++ ist eine höhere Programmiersprache und wird sowohl in der Systemprogrammierung als auch in der Anwendungsprogrammierung eingesetzt. Sie ermöglicht zum einen eine effiziente, maschinennahe Programmierung, aber auch Programmierung auf hohem Abstraktionsneavau.
Typische Anwendungsgebiete in der Systemprogrammierung sind Betriebssysteme, eingebettete Systeme, virtuelle Maschinen, Treiber und Signalprozessoren.

C++ ist ähnlich Hardwarenah wie C, zusätzlich objektorientiert.

Vorteile:
- Sehr weit verbreitet, dadurch auch eine grosse Sammlung an Hilfen, Büchern und so weiter
- Aufbau auf C, für Umsteiger von C also relativ einfach zu erlernen
- gute Performance

Nachteile:
- Grosser Aufwand und grosse Codes für grössere Applikationen

C#
C# ist von Microsoft entwickelt worden im Rahmen der .NET-Strategie. Es wird auf Konzepte von Java, C++, SQL, C und Delphi zugegriffen und unterstützt die Entwicklung sprachunabhäniger .NET-Komponenten und COM-Komponenten für Win32-Applikationen.

Das Einsatzgebiet von C# ist etwa dem von Java gleichzusetzen, mit dem Unterschied, das nichts plattformunabhängiges erstellt werden kann. C# wird auch für die Spielentwicklung benutzt.

Vorteile:
- DirectX- und OpenGL-Unterstützung
- Aufbau auf C und C++, für Umsteiger von C/C++ also relativ einfach zu erlernen

Nachteile:
- Die Ausführung benötigt eine virtuelle Maschine, was zusätzliche Systemressourcen benötigt

Java
Java ist wohl neben C++ die Programmiersprache schlechthin. Java verfolgt mehrere Ziele, wie zum Beispiel Sicherheit, Schnelligkeit und Robushtheit. Java arbeitet ausschliesslich Objektorientiert.

Einsatzgebiete für Java gibt es genug. Es wird für Programme aller Art eingesetzt, die auf mehreren System arbeiten müssen, so zum Beispiel SAP oder Oracle. Systemnahe Sachen sowie 3D-Sachen werden mit Java eher weniger realisiert.

Vorteile:
- Sehr sichere Sprache
- Applets
- Programmieraufwand kleiner als bei C++, auch bei grösseren Projekten
- Plattformunabhängig

Nachteile:
- Die Ausführung benötigt eine virtuelle Maschine, was zusätzliche Systemressourcen benötigt
- Die Systemprogrammierung ist sehr eingeschränkt

PHP
PHP ist das Arbeitstier des Webs. Kleine Projekte lassen sich einfach umsetzen und trotzdem hat es genug Reserven um auch mit anspruchsvollen Projekten klarzukommen. PHP ist aufgrund seiner Einsteigerfreundlichkeit sehr weit verbreitet und es gibt unmengen Dokumentation und Software. Durch die weite Verbreitung ist es aber nicht immer einfach da die Perlen zu finden.

Vorteile:
- Einsteigerfreundlich
- Objektorientiert
- Aktive Community
- Grosse Standardbibliothek

Nachteile:
- Inkonsistente und wenig objektorientierte Standardbibliothek

Python
Python verfolgt das Ziel, übersichtlich und kurz zu sein. Zum einen wurde dies dadurch realisiert, das wenig Schlüsselwörter benötigt werden, und zum anderen durch wurde die Syntax verkürzt. Durch die Einbettung von anderen Sprachen eröffnen sich nahezu unendliche Möglichkeiten für den Entwickler.

Mit Python lassen sich auch grössere Anwendungen programmieren, ausgenommen Spiele.

Vorteile:
- Leistungsstark
- Die Python-Lizenz ist für Firmen sehr interessant
- Plattformunabhängig

Nachteile:
- Keine Strichpunkte (macht den Umstieg schwerer)
- Die Codeverkürzungen, die man hat, machen Code sehr schnell nahezu unlesbar
- Keine grosse Verbreitung

Visual Basic
Visual Basic wurde mit dem Ziel entwickelt, möglichst einfach zu sein, um Rapid Development zu ermöglichen. Mit Visual Basic lassen sich sehr schnell Programme entwickeln. Die Syntax wurde der Einfachheit halber stark an Englisch angelehnt.

Einfache Programme werden mit Visual Basic realisiert, wie zum Beispiel Zusätze für Word- und Excel-Dateien (Visual Basic for Application). Für kleinere Projekte sowie zum einsteigen in die Programmierung ist man mit Visual Basic bestens bedient.

Vorteile:
- Sehr Einstigsfreundlich
- Schnelle Erstellung von Programmen
- Grosse Nachschlagewerke

Nachteile:
- Nicht für den industriellen Einsatz gedacht
- Nicht so viel Möglichkeiten wie andere Programmiersprachen

Fortgeschrittene Programmierer im Hardwareluxx

C
- Vermillion

C++
-

C#
- TBird

Java
-

PHP
- Nascar

Python
- Vermillion
- Furgy

Visual Basic
- TBird
- Furgy


FAQ - Frequently Asked Questions

Welche Programmiersprache eignet sich für den Einstieg?
Alle hier aufgeführten Sprachen kann man für den Einstieg in die Progroammierung nutzen. Wegen der Syntax, den Pointern und der nicht vorhandenen Objekte ist aber der Einstieg über C sicherlich der schwierigste.
Um die Frage also genau zu beantworten, muss man sich die Frage stellen, was man entwickeln will.


Weiterführende Links & spezielles zum Thema


Allgemeines
- OpenBook: Objektorientierte Programmierung von Galileo Computing

C
- OpenBook: C von A bis Z von Galielo Computing

C++
-

C#
- OpenBook: Visual c# 2008 von Galileo Computing
- Guide to C#
- .NET BlogBook

Java
- OpenBook: Java ist auch eine Insel von Galileo Computing

PHP
- OpenBook: PHP PEAR von Galileo Computing

Python
- OpenBook: Python von Galileo Computing

Visual Basic
- OpenBook: VisualBasic 2008 von Galileo Computing
- OpenBook: Einstieg in Visual Basic 2008 von Galileo Computing


_________________________________________________

Quellenangaben
- Wikipedia
- Vermillion
- TBird
- Kasn

Danksagungen
- Kasn für eingebrachte Ideen
- Vermillion für eingebrachte Ideen
- Kasn für eingebrachte Ideen
- CORNHULIO für eingeschickte Links für C#
- Allen Usern unter den Fortgeschrittenen Programmierer im Hardwareluxx

changelog:
15.10.2009:
-Grundgerüst erstellt
17.10.2009:
-"Welche verbreiteten Programmiersprachen gibt es?" erstellt
-"Fortgeschrittene Programmierer im Hardwareluxx" mit Vermillion in C, Vermillion in Python und Furgy in Python ergänzt
18.10.2009
- Nachteile von C# und Java korrigiert
- Delphi aus der Liste gängiger Programmiersprachen entfernt
- Visual Basic der Liste gängiger Programmiersprachen hinzugefügt
- PHP der Liste gängiger Programmiersprachen hinzugefügt
- "Fortgeschrittene Programmierer im Hardwareluxx" mit TBird in C#, TBird in VB, Nascar in PHP und Furgy in VB ergänzt
- Weiterführende Links mit OpenBooks von Galileo Computing ergänzt
- FAQ-Frage "Welche Programmiersprache eignet sich für den Einstieg?" hinzugefügt
- Nachteil von C++ korrigiert
- PHP komplett überarbeitet
19.10.2009
- Schreibfehler korrigiert
20.10.2009
- Weiterführende Links von C# erweitert
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Schöner Anfang!

Ich würde die Statements zu den Sprachen aber nochmal etwas überarbeiten, ein paar Dinge klingen vll. nicht ganz "wertungsfrei". "Java ist wohl neben C++ die Programmiersprache schlechthin." zum Beispiel, "Einsatzgebiete für Java gibt es genug" klingt auch merkwürdig - die gibt es schließlich für alle großen Programmiersprachen. ;)

Pointer sind so eine Sache, würde ich persönlich aber z.B. niemals als Negativpunkt werten.

Und bei Visual Basic würd' ich nochmal etwas näher spezifizieren, auf welches du dich beziehst. VBA und VB.Net sind durchaus verschieden ... :d
 
Schöner Thread, der hat in diesem forum noch gefehlt :)
Da werden sicherlich auch ein paar fragen von meiner seite in zukunft kommen...

Mit Python lassen sich auch grössere Anwendungen programmier, ausgenommen Spiele.
kleiner tippfehler :wink:
Nachteile:
- Keine Strichpunkte (macht den Umstieg schwerer)
- Die Codeverkürzungen, die man hat, machen Code sehr schnell nahezu unlesbar
Da stimme ich mit dir nicht ganz überein:
Wenn man eine neue Programmiersprache lernt muss man auch die Syntax lernen egal wie sie ist.
Wenn man zb. QBasic programmiert hat und dann C/C#/C++ lernt hat man genauso probleme mit der ";" Syntax.
Nachdem ich beide Varianten gemeistert habe war die Python Syntax für mich garnicht mehr so schwer zu lernen...
Im übrigen gibt es strichpunkt-syntax in Python, habe aber selbst damit (noch) nicht experimentiert.

Was genau meinst du mit Codeverkürzungen? 'if x==0: print("blah")' ?
Wenn du solche codekonstrukte meinst dann stellt sich die frage ob man diese überhaupt braucht?
Die ausführungsgeschwindigkeit der meisten python programme ist doch ausreichend (das ist noch untertrieben), und falls es doch einmal schneller sein muss gibt es doch genug alternativen um das programm zu beschleunigen. (zb. Psyco od. algorithmen & code optimieren)
Auf geschwindigkeit zu optimieren auf kosten der übersicht würde ich deshalb auf keinen fall.

Es muss doch andere gravierendere schwächen von Python geben :confused:
 
ich bin der meinung dass die geringe Verbreitung von Python ein Nachteil ist. Es gibt wenige Ressourcen dazu.
 
Schöner Anfang!

Ich würde die Statements zu den Sprachen aber nochmal etwas überarbeiten, ein paar Dinge klingen vll. nicht ganz "wertungsfrei".
Pointer sind so eine Sache, würde ich persönlich aber z.B. niemals als Negativpunkt werten.

Und bei Visual Basic würd' ich nochmal etwas näher spezifizieren, auf welches du dich beziehst. VBA und VB.Net sind durchaus verschieden ... :d

1.) Danke. :d
2.) Du darfst gerne eine konstruktive Beiträge bringen. Sprich, hast du konkrete Vorschläge?
3.) Denke mal, das man beides reinnehmen sollte? Es gibt da draussen bestimmt Leute, die nur VBA einsetzen, und solche, die nur VB.NET einsetzen...

Finde ich auch, dass der erste Post nicht ganz wertfrei klingt :d, aber viel mehr interessiert mich wieso Java als "Sehr sichere Sprache" bezeichnet wird.

Weil Java sehr verbreitet ist, und darum auch mehr Angriffen standhalten msus, weshalb da die Entwicklung wichtig ist?

Schöner Thread, der hat in diesem forum noch gefehlt :)
Da werden sicherlich auch ein paar fragen von meiner seite in zukunft kommen...

kleiner tippfehler :wink:

Da stimme ich mit dir nicht ganz überein:
Wenn man eine neue Programmiersprache lernt muss man auch die Syntax lernen egal wie sie ist.
Wenn man zb. QBasic programmiert hat und dann C/C#/C++ lernt hat man genauso probleme mit der ";" Syntax.
Nachdem ich beide Varianten gemeistert habe war die Python Syntax für mich garnicht mehr so schwer zu lernen...
Im übrigen gibt es strichpunkt-syntax in Python, habe aber selbst damit (noch) nicht experimentiert.

Was genau meinst du mit Codeverkürzungen? 'if x==0: print("blah")' ?
Wenn du solche codekonstrukte meinst dann stellt sich die frage ob man diese überhaupt braucht?
Die ausführungsgeschwindigkeit der meisten python programme ist doch ausreichend (das ist noch untertrieben), und falls es doch einmal schneller sein muss gibt es doch genug alternativen um das programm zu beschleunigen. (zb. Psyco od. algorithmen & code optimieren)
Auf geschwindigkeit zu optimieren auf kosten der übersicht würde ich deshalb auf keinen fall.

Es muss doch andere gravierendere schwächen von Python geben :confused:

1.) Danke, schön einen "Dauerbenutzer" zu haben. :d
2.) Wird korrigiert, danke!
3.) Ich such den Code der arg verkürzt ist nochmal raus und Zeige ihn dir, aber das was du meinst ist nicht das was ich meine. ;)
4.) Es muss noch Nachteile haben - nichts und niemand ist perfekt...

ich bin der meinung dass die geringe Verbreitung von Python ein Nachteil ist. Es gibt wenige Ressourcen dazu.

Kann ich dazuschreiben.
 
Weil Java sehr verbreitet ist, und darum auch mehr Angriffen standhalten msus, weshalb da die Entwicklung wichtig ist?

Hat sich da jemand am Nobelpreis Komitee ein Beispiel genommen? x)

Dachte du kommst mit einer Begründung wie "Weil Java einen Security Manger hat der die Rechte von Objekten speziell prüft" oder vielleicht wegen dem "Code Verifier der den Bytecode nochmals auf seine Korrektheit prüft bevor er von der JVM abgearbeitet wird :P
 
Weil Java sehr verbreitet ist, und darum auch mehr Angriffen standhalten msus, weshalb da die Entwicklung wichtig ist?
Ich als C# Entwickler verstehe nicht, kann sein dass ich es auch nicht verstehen will :d ;), wieso dies ein Pro Java Argument ist und bei C# nicht.

Genauso muss die "Plattformunabhängigkeit" nicht wirklich ein Vorteil sein, weil durch diesen gemeinsamen Nenner nicht immer das "optimale" aus meiner Plattform herauszuholen ist.


Dies hier soll aber keine Kritik sein, sondern vielmehr als Diskussionsgrundlage dienen.
 
Jupp, Plattformunabhängigkeit ist nicht immer von Vorteil. Habe das bei einigen Projekten sehr deutlich gemerkt und bin denn auf .Net dafür umgestiegen ... und größtenteils bei hängne geblieben. ;)
 
Sollte man jetzt eurer Meinung nach die Plattformunabhängigkeit bei den Vor- und Nachteilen schreiben, oder weglassen?
 
Das ist schon mehr ein Vorteil als ein Nachteil.

In der Java-Welt gibt es viele viele ausgereifte Frameworks, wie z.B. Spring für leichtgewichtige Enterprise Applications oder JBoss Seam, oder Objektrelationales Mapping wie Hibernate woraus dann auch z.B. NHibernate für die .NET Plattform entstanden ist.....
 
Zuletzt bearbeitet:
Das ist schon mehr ein Vorteil als ein Nachteil.

In der Java-Welt gibt es viele viele ausgereifte Frameworks, wie z.B. Spring für leichtgewichtige Enterprise Applications oder JBoss Seam, oder Objektrelationales Mapping wie Hibernate woraus dann auch z.B. NHibernate für die .NET Plattform entstanden ist.....

Sollte man davon eventuell etwas in die Liste der weiterführenden Links aufnehmen? :)

Ich wäre noch dafür Perl mitaufzunehmen. :)

Und warum?
 
Schwierig, es sind einfach zu viele Sachen. Bei Vorteile von Java würde ich die riesige Community und die vielen Open-Source Frameworks aufführen, da ist Java wohl der Spitzenreiter.
 
Kann es sein dass die 64bit version von Python langsamer läuft als die 32bittige, selbst unter einem 64bit OS? :hmm:

Es hat mich interessiert wie die 64bit/32bit-Python Interpreter performen und deshalb dieses codefragment gebencht
Code:
import timeit

class Prim_Eratosthenes:

  def __init__(self, anzahlDerPrimzahlen):
    self.anzahl = anzahlDerPrimzahlen
    self.gestrichen = [False] * (self.anzahl)
    #self.print_prims()
  def calculate(self):
    i = 2
    while i*i <= self.anzahl:
      if self.gestrichen[i] == False:
        for j in range(i*i,self.anzahl,i):
          self.gestrichen[j] = True
      i = i + 1 

  def print_prims(self):
   for i in range(1, self.anzahl):
     if self.gestrichen[i] == False:
       print i

if __name__=='__main__':
  a=Prim_Eratosthenes(1000000)
  t=timeit.Timer("Prim_Eratosthenes(1000000)","from __main__ import Prim_Eratosthenes")
  print t.timeit(1000)
  print "finish!"

Da ich das Ergebnis nicht ganz glauben wollte habe ich es noch mit py2exe probiert

spizraw.jpg


Hab ich da ne krümmung in der Optik? :confused:

Bitte klärt mich auf...
 
Zuletzt bearbeitet:
Schwierig, es sind einfach zu viele Sachen. Bei Vorteile von Java würde ich die riesige Community und die vielen Open-Source Frameworks aufführen, da ist Java wohl der Spitzenreiter.

Werde es ergänzen. ;)

Kann es sein dass die 64bit version von Python langsamer läuft als die 32bittige, selbst unter einem 64bit OS? :hmm:

Es hat mich interessiert wie die 64bit/32bit-Python Interpreter performen und deshalb dieses codefragment gebencht
Code:
import timeit

Hab ich da ne krümmung in der Optik? :confused:

Bitte klärt mich auf...[/QUOTE]

Habe kurz deinen Code in ein Script gedrückt und ausgeführt.
Bei mir laufen beide gleich schnell... :confused:
 
Du hast das jetzt nicht unter Windows probiert oder?

Python 2.6/3.11 läuft bei mir exakt dasselbe ab - 32bit ~ 8s <-> 64bit ~10s

Womöglich auch nur ein sonderfall.
 
Doch, habe eben das virtuelle XP angeworfen - ging zwar länger als bei dir, jedoch gleich lang...Habs mit Python 3.1 getestet...
 
Hi leute, brauche etwas hilfe in java

folgendes ist gegeben:

ich soll mit einem array 7 zahlen zwischen 1 und 6 wiedergeben. und in wenn deser folge mehr als drei gleiche zahlen sind, als pash wiedergeben.

das program ist soweit lauffähig...kann die 7 zahlen zwischen eins und 6 in einer schleife wiedergeben.

mein problem ist jetzt nur, wie ich in den 7 zahlen mindestens 3 gleiche finden..ohne array, mit festen stellen, ist das nicht sonderlich schwer...aber wie mache ich das in einem array?

das ganze in einer extra methode zu schreiben ist wohl am sinnvollsten. aber wie schreibe ich das am besten?
 
vorweg, ich hab keine ahnung von java, in php wuerde ich das spontan so machen:

ein zweites array anlegen. Ueber das array mit zahlen iterieren und bei jeder zahl entweder einen neuen schluessel mit dem wert der zahl und dem inhalt 1 in dem zweiten array anlegen oder eben dieses element um ein erhoehen. dann ueber das zweite array laufen und schauen ob eine zahl den wert 3 hat.

PHP:
$auftreten = array();
foreach ($zahlen as $zahl) {
    if (isset($auftreten[$zahl])) {
        $auftreten[$zahl]++;
    } else {
        $auftreten[$zahl] = 1;
    }
}

foreach ($auftreten as $zahl => $anzahl) {
    if ($anzahl > 3) {
        echo 'pasch bei ' . $zahl;
    }
}

aber ka ob das in java mit den arrays so geht.
 
nicht direkt. aber es hat mir ein paar gute gedankengänge gebraucht. habs jetzt gelöst, danke :)
 
ich wäre dafür das der fred sticky gemacht wird. ist ne gute sache find ich.
 
Dass C für größere Projekte ungeeignet sei, will ich nicht so stehen lassen.
Man muss sich ja nur man den Linux Kernel ansehen, MySQL, den PHP interpreter,
Apache, X11 undsoweiter.
 
Ich habe eine Frage zu VB.Net
Ich habe ein kleines Programm für unsere nächste kleine LAN erstellt. In dem Programm sind alle Mods aufgelistet, mit UNC links auf meinen Rechner. Nun würde ich gerne noch die Möglichkeit bieten die Dateien auf den eigenen PC zu kopieren.

Gibt es eine Möglichkeit den "Speichern unter..." Dialog zu öffnen?

gestartet habe ich die Dateien einfach mit
process.start("UNC pfad")
 
Gibt es eine Möglichkeit den "Speichern unter..." Dialog zu öffnen?

Code:
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ins As New SaveFileDialog()
        ins.Title = "Speichern unter"
        ins.ShowDialog()
        TextBox1.Text = ins.FileName
    End Sub
End Class
 
Huhu, ich hab ein Problem. Es geht nun erstmal darum, festzustellen was und wo ein Programm in den Speicher bzw. Bios schreibt.

Es geht ums MSI Control Center, dort kann man die Spannungen verstellen,allerdings nur in den Vorgaben der Hersteller. Mir und noch ein paar anderen Forenusern geht es darum die Vcore zu verringern. MSI lässt das nicht zu. Unter Linux funktioniert das laut diesem Post: http://www.hardwareluxx.de/community/14124475-post462.html

Also wenn man die Adresse wüsste könnten man den Offset mittels Hexcode verändern und damit auch negativ werden lassen.

Hat jemand vielleicht einen Tip wie man das rausbekommen kann ? Oder welches Programm hilfreich dabei ist ?

Achja, das linux-phc ( http://www.linux-phc.org ) ist in Python geschrieben
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh