Der Club der Programmierer

Da gestern im „Gedanke des Tages“ eine kleine Programmierdiskussion entstanden ist und anscheinend sehr sehr viele Hobby-Programmierer als auch gelernte Programmierer/Entwickler hier unterwegs sind dachte ich mir, mach ich mal so einen Thread auf, in dem über die abgedroschenen Klischees wie „Java ist lahm“ oder die „beste“ Programmiersprache, aber auch persönliche Erfahrungen erzählt werden kann.

Persönlich bin ich eher Skriptsprachen-Typ und bevorzugt mit Python unterwegs. Ist zwar nicht die performanteste, aber für mich eine der eleganteren Sprachen in diesem Umfeld. Dies ist wohl die Sprache, die ich am längsten und besten kann. Leider kann ich die Kenntnisse in dieser Sprache nicht mehr in meinem Beruf einsetzen, da hier eher Java und PL/SQL verwendet werden.
Von Java selbst bin ich nicht so der Fan, was nichts mit der Performance zu tun hat, sondern eher mit den teilweise arg verkrüppelten Sprachkonstrukten, die drangeflanscht wurden (Stichwort Generics). Die wirken teilweise ziemlich halbgar und machen einem vor allem im JEE-Umfeld das Leben unnötig schwer wenn man etwas optimal konzipieren will.
Ansonsten kann ich ein bisschen Perl, (ANSI) C, ABAP und wahrscheinlich auch noch Bruchstücke von COBOL und PHP.

Aber nun zu euch. Welche Sprachen könnt ihr so und in welchem Umfeld setzt ihr sie bevorzugt ein? Habt ihr vielleicht schon irgendwelche größeren Projekte umsetzen können, die ihr publik gemacht habt?

Joa… ich habe mal beruflich Java gemacht, habe noch so Grundkenntnisse in C++/C#, Python, PHP, HTML (letzere beide nutze ich privat ab und an und muss mich dann jedes Mal wieder reinfuchsen :D).

Habe mal nebenher ein wenig „grafisch programmiert“ (weiss garnicht wie man das nennt) weil man da viel mit den Koordinaten, Vektoren, Drehwinkeln und so rumhantieren musste und meine Frau davon keine Ahnung hat (Frauen und räumliches Denken halt :wink: ), sie dies aber für ihr Studium brauchte. SVG, VRML und so.

Aktuell muss ich mich wieder ein wenig mehr mit SQL beschäftigen.

Ich programmiere Siemens S7! :wink: Meistens in AWL. Das ist eine Maschinensprache um SPS (Speicherprogrammierbare Steuerungen) zu programmieren und dadurch Maschinen zu automatisieren.

In HTML habe ich auch (selbst angeeignete) Kenntnisse.

[quote=„„AWL Beispiel““]

U E1.0
U E1.1
= A0.0

Heisst soviel wie

Und Eingang 1.0
Und Eingang 1.1
= Ausgang 0.0

Das bedeutet wenn an Eingang 1.0 und an Eingang 1.1 ein Signal ansteht, steht auch ein Signal an Ausgang 0.0 an.

[/quote]

Gibt auch noch kompliziertere Anwendungen mit Sprüngen, Zählern, speicherindirekter Adressierung etc.

Hoffe aber ich konnte euch das ein bisschen näher bringen.

Java hatte ich ein bisschen in der Weiterbildung.

Jede Sprache hat halt ihren eigenen Einsatzbereich und ihre Vorteile aber auch Nachteile. Klar, sowas wie init mag zwar hässlich wirken aber die anderen Magic-Methoden die man beispielsweise für Operator-Überladung nutzen kann oder allgemein für irgendwelche Hooks sind schon extrem nett.

Und zudem ist die Sprache schlank genug um sie auch auf speicherarmen Geräten wie 'nem NAS oder Raspi zu betreiben und hier ein bisschen Automatisierung zu betreiben. Java macht auf einem System mit ARM-CPU mit Software-FPs keinen wirklichen Spaß. :wink:

Konkretes Beispiel kann ich nicht mehr rekonstruieren (ist gut ein halbes Jahr her) aber die „Einfachheit“ der Java-Generics hatte mir einen vom Ansatz her sehr netten dynamischen DAO zum Management von JPA-Entitäten mit CompositeKeys verhagelt. So ist sowas hier beispielsweise nicht möglich:

public class Dao<T,K> { // T ist der Entitäts-Typ, K der Typ des Schlüssels

  public T findById(K id) {
    try {
      T instance = entityManager.find(T.class, id);  // T.class nicht möglich
      return instance;
    }
    catch(RuntimeException re) {
      throw re;
    }
}

Stichwort Type Erasure. Ist zwar nur ein Grenzfall aber dennoch nervig. :wink:

Und ich geb gerne zu dass die Sprache nicht mein persönliches Steckenpferd ist aber ein Wald-und-Wiesen-Java-Entwickler von der Uni bin ich auch nicht.

Klar das Ökosystem mag toll sein und so Sachen wie Hibernate oder die JEE-APIs machen Spaß, aber die Sprache selbst ist hier und da doch ein bisschen unflexibel. Ist aber auch der Abwärtskompatibilität geschuldet.

Im Studium musste ich mich mit C, C++, Java, Maple, Matlab und Statistiksoftware R auseinandersetzen.

Privat will ich meine Kenntnisse in C++ erweitern, der Grund hierfür ist die Objektorientierte Programmierung. Unser damaliger Dozent legte uns nahe dass dies die seiner Meinung nach wichtigste Art und Weise ist zu programmieren.
Java habe ich eigentlich nur nebensächlich kennengelernt, aber auch hier heißt es objektorientiert arbeiten, weswegen sich wohl C++ und Java nicht so sehr voneinander unterscheiden.

Und zum Schluss noch eine Frage an die etwas erfahreneren: momentan benutze ich als Compiler Dev-C++ (Version 4.9.9.2). Könnt ihr mir ein paar Empfehlungen aussprechen?

Danke im voraus!

Bei mir beschränkt sich mein „Wissen“ leider bisher nur auf HTML und einfache SQL Abfragen…PHP kann ich zumindest mit SQL-Datenbank im Hintergrund sowas wie Login-Bereiche und Datensätze hinzufügen etc. machen.
Bei den „ordentlichen“ Programmiersprachen kam ich leider nie über Eingabe,Ausgabe,If,While so richtig hinaus :frowning: Habe schon mit ziemlich vielen mal sowas rumgespielt.
Versuch schon seit einiger Zeit irgendwie Motivation zu finde mich mal bisschen mehr in Java oder so einzuarbeiten, aber es fehlt einfach irgendein Ziel…

Bin vor einem Jahr beruflich in die c# und java (zwecks Android) Programmierung…rein gerutscht, will ich es mal nennen. habe davor etwas ganz anderes gemacht, sah darin aber keine Zukunft. Also seit dem am lernen und setze es in eigenen Apps und Module um.

Komme gerade von der dotnet cologne zurück, waren schon interessante Sachen dabei, besonders die befehle für sql server '05/'12. für nächstes Jahr auf jeden Fall wieder ein Besuch wert.

Habe noch intensives Wissenaneignen vor mir, also mitreden ist leider noch nicht drin, aber interessant was man hier so liest.

Sacht ma, ist das ganze eigentlich schwierig zu lernen? Also wenn ich z.B. eine Website gestalten möchte oder sowas?

Die Frage(n) passen nicht zusammen.

Möchtest du eine Webseite „designen“ oder mit schönem Code versehen um so viel Funktionalität reinbekommen? PHP, Javascript, CSS? Wenn du sie designen willst, dann dauerts lange, bis du es ohne geeignete Tools hinkriegst (Sprich nur in Notepad/Notepad++). Ansonsten ist es erstmal HTML. Hier im Forum wird sehr viel JavaScript verwendet.

Ansonsten ist das lernen einer Programmiersprache nicht so schwer. Besonders wenn im Grunde schon alle Klasse vorgeben sind.

Ich bin derzeitig in der C# Umgebung unterwegs. Allerdings ein wenig beschränkt, sprich es ist eher Programmieren um dadurch bessere Ergebnisse zu erziehlen anstatt Programme „zu verkaufen“. Problem bei C# ist das total einfache decompiling :[

Angefangen hab ich klassisch mit Basic und selber Programme geschrieben für den C64/ZX Spektum, die ich so um 1985 an Zeitschriften vertickt hab. Ja zu der Zeit gab es einiges an Zeitschriften mit abtippbaren Programmen. Ich habe mich hauptsächlich auf die Grafik konzentriert, Titelbilder, Strites, Animationen und der gleichen erstellt, was ich auch am Amiga weiter gemacht habe mit Freunden, die für den Rest zuständig waren, Sound, Programmierung der Spielchen etc. Zwischenzeitlich habe ich mir dann noch Pascal bzw danach Turbo-Pascal von Borland. beigebrach sowie ansatzweise Fortran angeeignet. Aber mit Anschaffung des ersten PC, ist das Ganze zum erliegen gekommen. Erst seit dem mein Jüngster in der Schule damit zu tun hat, hab ich angefangen mit Visual Basic und C++ zu experimentieren und stelle fest, das einiges aus den alten Programiersprachen übernommen wurde.

Zum Lernen von Programmiersprachen kann ich nur sagen, dass es mir leichter gefallen ist bzw. leichter fällt mir mehreren zu lernen.

Was mich von euch auch noch interessieren würde: Habt ihr euch ein klein wenig „Hacker-Kenntnisse“ angeeignet?
Ich meine dies aber nicht in dem Sinne „Ich habe XY gehackt“ sondern eher ob ihr bei der Programmierung darauf achtet das Programm so sicher wie möglich zu gestalten. Ich habe erst vor kurzem gelesen das selbst erfahrene Programmierer teilweise überrascht sein können wie unsicher selbst vermeintlich sichere Programme sein können. Die Sicherheit eines Programmes ist wohl zu Zeiten steigender Cyber-Kriminalität auch so ein Punkt auf den man viel Wert legen sollte.
Ich habe im großen und ganzen keine Ahnung von sowas, die Sicherheit in einem Programm fängt wohl bereits bei der Variablendaklarierung an (private, public etc.), aber viel weiter hinaus gehts bei mir auch schon nicht mehr.

Geht ja primär dadrum, wo du wichtige und relvante Informationen abspeicherst. Passwörter nie im Klartext im Quellcode definieren und nutzen, lieber verschlüsselt über einen extra dafür entwickelten USB-Dongle verwenden, etc.

Ansonsten lieber nicht in C# programmieren, wenn du sehr wichtige Informationen nutzt. Algorithmen und Quellcode sind da nämlich sofort geknackt.

Mit Sicherheit versuche ich mich teilweise zu beschäftigen. Auf der Arbeit wird das aber nichts damit, da sowas im Projektgeschäft keine Priorität hat aber privat versuche ich schon darauf zu achten.

Das selbe gilt aber für fast alle Sprachen, da man auch vermeintlich sicheren Bytecode ja wieder dekompilieren kann. Ist bei anderen Hochsprachen ähnlich schlimm. Wobei ich jetzt nicht weiß ob man bei den .NET-Sprachen im Dekompilat mehr direkte Infos hat als beispielsweise bei Java (da sieht man ja soweit ich weiß nur die JVM-Befehle aber nicht den Java-Code, worauf das basiert).

Aber schlimmer als die meisten Skriptsprachen, wo es in der Regel keinen Bytecode gibt, kann es bei C# nicht sein.

Ok, das es so extrem ist wusste ich nicht. Die Frage ist nur, ob man wirklich das Prinzip Security by Obscurity fahren möchte oder ob man halt das Risiko eingeht, dass andere den Code direkt sehen können. Es spielt ja nur eine Rolle um mögliche Konkurrenz zu verhindern.

Im wirklichen Unternehmensumfeld kann man die Schiene aber nicht immer fahren, da man größere Kunden sonst eher vergrault.

http://ilspy.net/ findet man z.B. nach 3s Google. Ich habe mal gehört, dass gerade C# sehr anfällig ist. C++ und C ist wohl „etwas sicherer“, aber wenn du halt gute decompiler hast, dann ist das auch kein Problem mehr.

Gibt wohl Ideen, wie man es etwas schwerer machen möchte, quasi ein ghosting oder so. Aber auch das hilft ja relativ wenig, wenn sich jemand die ghosting software besorgt und es rückwirkend macht :wink:

Ich hab in der Schule mal ein bisschen in Python programmiert. Hatte auch sehr viel Spaß daran, letztlich haben wir ein kleines Programm geschrieben, bei dem man die Fläche etc. von Dreiecken, Rechtecken und co. ausrechnen lassen konnte und sich ein Abbild eines Dreiecks etc. anzeigen lassen konnte. Zuletzt dann noch Tic-Tac-Toe, aber das wars dann auch leider und ich habs danach einfach nicht mehr weiter verfolgt, weil ich es einfach nicht brauchte. War mit meinem Arbeitspartner ziemlich stolz darauf, dass (fast) alles geklappt hat. :smiley: Vielleicht fange ich doch nochmal an und schaue mal, was ich so basteln kann. Vier gewinnt wäre ja mal ne große Aufgabe für mich. ^^ Wenn man nur einfach viel Zeit dafür hätte..