Programmieren lernen, welche Sprache?

C, da kann man auch gleich Lochkarten verwenden. ^^ Und natürlich ist C++ eine Ausgeburt der Hölle. Programmieren = Abstraktionen schaffen. Das geht am besten mit Scala oder C#/F#.
 
Es soll auch Leute geben, die, vor lauter Suchen nach der perfekten Sprache, nie angefangen haben zu programmieren.
 
Tim wird eh für die Suche nach der optimalen Sprache so lange brauchen wie für den Kauf seiner CPU.

Tim, fang einfach an mit Python. Das passt schon. ^^
 
Ich habe damals auf SInclair ZX-81 und Commodore VC-20 in BASIC angefangen. Solch ein Commodore VC-20 hat sage und schreibe 2KB RAM. Da kommt man an Assembler nicht vorbei bei dem geringen RAM und der Supergeschwindigkeit der damaligen BASIC Interpreter, um mal was schnelles auf den Schirm zu zaubern. C-64 habe ich nur in Assembler programmiert. Commodore Amiga erst auch in Assembler, später dann Lattice->SAS-C. In einer Hochsprache kommste halt 10 mal schneller vorwärts, als in schierem Assembler.

Ich bin dann über Brian W. Kernighan und Dennis M. Ritchie C, Buch -> The C Programming Language heutzutage bei C++ und C# gelandet mit MS Visual Studio.

C insgesamt ist plattformunabhängig. Wenn Du das wirklich drauf hast, dann kannste alle anderen Sprachen wegen Codesize und Performance voll in die Tonne hauen.

Ich habe 1991 mal die Krätze gekriegt mit Dave von Junglecommand. Dr. Pflaume hatte einen 8085 Assembler Emulator in Turbo Pascal mit Segment:Offset Adressierung auf 80286 programmiert und wir Schüler sollten ein paar mal daran teilnehmen.

Ich so Dave, warum ist der Kack Emulator so furchtbar langsam, da pennt man ja bei ein. Wir einfach nicht mehr zum Unterricht gegangen, X86 Assembler und C den 8085 Emulgator neu geschrieben. Der Pauker immer zu den anderen gesagt, die bestehen die Prüfung nicht. Wir voll abgeräumt, den Emulator hochperformant abgeliefert. Deswegen hasse ich solche Begriffe wie Turbo Pascal und Phyton und irgendwelche Sprachen wie Kaffeetasse, die so oder so gegen C keine Schnitte haben.
 
Zuletzt bearbeitet:
Ähm... genau, keine Referenzen... was übergebe ich denn bitte bei einem "call by reference" Aufruf? Bananen?

C hat keine Pass by Reference Syntax, sondern ausschließlich Pass by Value.
Man kann Pass by Reference lediglich durch die Verwendung von Pointern emulieren.


Aber gut, BTT:
Generell ist es so, dass Anfänger eher einfache Dinge lernen. Beim Skateboarden probiert man sich eben zuerst an einem Kickflip und nicht direkt an einer 900° Drehung auf der Halfpipe.
Und C ist eben nicht besonders einfach: Es gibt sehr viele Dinge, die man als Anfänger falsch machen kann (und wird).
Python dagegen ist explizit dahin entwickelt worden, einfach zu sein. Dafür ist die Sprache dann eben ~200 Mal langsamer als C, aber für Anfänger ist die Performance eben ziemlich unwichtig.
Ich möchte hier auf keinen Fall sagen, dass C schlecht ist. Ich mag C. Aber es ist nach heutigen Maßstäben keine anfängerfreundliche Programmiersprache, weil man einfach relativ lange braucht, um Ergebnisse zu erzielen.
 
Dann wäre es in meinem Fall wohl am sinnvollsten mir ein dickes Buch für die gewählte Programmiersprache zu kaufen, gibt es da Empfehlungen, welches Buch für Anfänger gut geeignet ist und auf für Fortgeschrittene noch ausreicht und vielleicht gleich eine CD mit den nötigen Programmen (Compiler und Entwicklungseben) mit dabei hat?
 
Du kannst, wenn Du C Sharp lernen willst unter dotNET der ww.mycsharp.de community beitreten, visual studio haste im nu runtergeladen. schreibste deine erste eigene windows applikation im schutz des dotNET frameworks.
C# ist sehr helpschool und einfach geil, visual studio kannste aber auch im c++ starten, dann wirds etwas mehr richtung assembler.

In Assembler kann man Alles machen, in C fast alles, in C++ fast fast Alles und in C# schreibt man moderne Applikationen im dotNET.


Bücher brauchst DU heutzutage nicht mehr. WIN32 API von Charles Petzold habe ich. Ich habe aber auch viel mit NoBugz, ein Microsoft MVP geschrieben.

Das ist ein gutes Online Buch: C# - Rheinwerk openbook

Schieres C unter WIN32API :-) RS232 Communications, unter DOS kriegste das sehr schlank hin, in einem Multitasking Multiusersystem so:

http://www.tetraedre.com/advanced/serial/msdn_serial.htm

Ich habe ein Outlook Addin geschrieben in 10 Minuten:-)

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

namespace Nirvana
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            Outlook.Application application = this.Application;

            application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(ItemSend_BeforeSend);
        }
        void ItemSend_BeforeSend(object Item, ref bool Cancel)
        {
            if (Item is Outlook.MailItem)
            {
                Outlook.MailItem mailItem = (Outlook.MailItem)Item;
                if (mailItem != null)
                {
                    string s = mailItem.To.ToLower();
                    if (s.Contains("ilona"));
                    {
                        //System.Windows.Forms.MessageBox.Show("Keine Mails an Weiber schicken !!!", "Frankie!");
                        Cancel = true;
                        Outlook.Inspector insp = mailItem.GetInspector;
                        ((Outlook._Inspector)insp).Close(Outlook.OlInspectorClose.olDiscard);
                    }
                }
            }
        }
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
            Application.ItemSend -= ItemSend_BeforeSend;
        }      
        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }
        
        #endregion
    }
}
 
Zuletzt bearbeitet von einem Moderator:
... für die gewählte Programmiersprache zu kaufen, gibt es da Empfehlungen,

Welche Sprache hast du denn jetzt gewählt? :D

Dann wäre es in meinem Fall wohl am sinnvollsten mir ein dickes Buch für die gewählte Programmiersprache zu kaufen, gibt es da Empfehlungen, welches Buch für Anfänger gut geeignet ist und auf für Fortgeschrittene noch ausreicht und vielleicht gleich eine CD mit den nötigen Programmen (Compiler und Entwicklungseben) mit dabei hat?

Ich würde ehrlich kein Buch kaufen. Im Internet gibt es genug Tutorials mit Links, unter denen du dir die nötige Software runterladen kannst. Bei Problemen können wir dir auch Schritt für Schritt sagen, was du machen musst. Wenn dir ein Tutorial im Internet nicht gefällt, kannst du immer noch zu einem anderen wechseln, bei einem Buch hast du dann eine Menge Geld verschenkt. Bücher würde ich dann eher für spezifische Themen wie Betriebssysteme oder Netzwerke kaufen (die Bücher von Tanenbaum sind zu empfehlen).
Eine Ausnahme würde ich da bei C++ machen. C++ ist einfach so unglaublich umfangreich...

Die meiste Zeit wirst du dann eh in der Dokumentation spezifischer Bibliotheken oder auf stackoverflow.com verbringen.


Falls du Python ausprobieren möchtest:
Lade dir https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe herunter, das beinhaltet den CPython Interpreter, IDLE (eine sehr sehr grundlegende IDE, die speziell zum Lernen entworfen wurde) und einige andere nützliche Tools, die du später vielleicht benutzen wirst.

Dann kannst du IDLE einmal starten und
Code:
print("Hallo")
oder
Code:
3 + 3
eingeben. Schwups, das war das erste Programm.

Als Tutorial würde ich 3. An Informal Introduction to Python — Python 3.7.3 documentation angucken.
 
Zuletzt bearbeitet:
Aber gut, BTT:
Generell ist es so, dass Anfänger eher einfache Dinge lernen. Beim Skateboarden probiert man sich eben zuerst an einem Kickflip und nicht direkt an einer 900° Drehung auf der Halfpipe.
Und C ist eben nicht besonders einfach: Es gibt sehr viele Dinge, die man als Anfänger falsch machen kann (und wird).
Python dagegen ist explizit dahin entwickelt worden, einfach zu sein. Dafür ist die Sprache dann eben ~200 Mal langsamer als C, aber für Anfänger ist die Performance eben ziemlich unwichtig.
Ich möchte hier auf keinen Fall sagen, dass C schlecht ist. Ich mag C. Aber es ist nach heutigen Maßstäben keine anfängerfreundliche Programmiersprache, weil man einfach relativ lange braucht, um Ergebnisse zu erzielen.

Kommt auch darauf an welches Lernziel man verfolgt.
Ich finde es angenehm mit C#/VB.Net zu arbeiten und möchte es nicht mehr missen, genauso aber auch den Einstieg an der Uni mit C - immer noch.
 
Ich hab zwar damals Turbo-Pascal sicher auch noch lange nicht auf allen Gebieten ausgereizt, bin aber bei einer selbst programmierten Datenbank an die Grenzen des Speichers gestoßen, nicht das RAMs oder der HDD, die Sprache konnte anscheinend nicht so viele Daten ablegen, wie ich das gerne gehabt hätte, ist aber auch möglich, daß ich ungeschickt programmiert hatte und es bessere Lösungen dafür gegeben hätte.
Damals hab ich mir dann geschworen, nie wieder eine Sprache, die mir so früh schon Grenzen zeigt und ich wollte zu C wechseln, hab das Programmieren dann aber ganz an den Nagel gehängt.

Das ist zwar objektiv betrachtet jetzt nicht mehr wichtig für mich, aber es ist irgendwie eine Kopfsache, wenn ich anfange was zu lernen, möchte ich wissen, daß ich da auch nach vielen Jahren und vielleicht großen Fortschritten nicht an die Grenzen stoßen werde und mit der Sprache quasi alles machen kann und alle Möglichkeiten habe.
 
Das ist zwar objektiv betrachtet jetzt nicht mehr wichtig für mich, aber es ist irgendwie eine Kopfsache, wenn ich anfange was zu lernen, möchte ich wissen, daß ich da auch nach vielen Jahren und vielleicht großen Fortschritten nicht an die Grenzen stoßen werde und mit der Sprache quasi alles machen kann und alle Möglichkeiten habe.

Ich bin mir nicht sicher, ob die Fragestellung so überhaupt Sinn ergibt.
Wenn Du in der Windows-Welt bleiben willst nimm C#, VB.NET und fang einfach mal.
 
Nur ne Woche, das wäre aber außergewöhnlich wenig! ;)

Nein, Spaß beiseite, es drängt mich da ja nichts, ich habe kein Projekt, was ich machen muß, es ist einfach das Interesse daran, zu versuchen was schwieriges neues zu lernen und sinnvoll Zeit am PC zu verbringen.

Wichtig für mich zu wissen wäre vorher noch folgendes:

a) Falls ich mich wirklich für ein C-Derivat entscheide, was unterscheidet C von Pascal?
b) Was macht C so schwierig, ist es sehr mathematisch, so daß man dort ein fundiertes Grundwissen braucht um in der Sprache was reißen zu können?
Falls ja, ist es in der Tat ein Problem für mich, denn ich war in Mathematik nicht so gut und mein Schulwissen liegt ja auch ewig zurück.
c) Welche Hilfestellungen kann ich bekommen?
Es wurden ja schon ein paar Links genannt, jedoch finde ich manchmal ein gedrucktes dickes Buch besser, als wenn man alles auf dem Bildschirm auf irgendwelchen Webseiten lesen muß.
Gut wären auch kleine Programme zum Veranschaulichen verschiedener Befehle und deren Möglichkeiten und genauen Erklärungen, wofür die einzelnen Zeilen notwendig sind und wie man sie variieren kann.
 
a) Ich kenne Pascal leider nicht, deswegen kann ich dazu nichts sagen. zwischen C, C++ und C# liegen allerdings Welten.
b) C ist eine sehr simple Programmiersprache. Das heißt aber nicht, dass C einfach wäre. Ganz im Gegenteil:
C ist eine sehr kleine Programmiersprache, komplexere Funktionen muss man aus wenigen, einfachen Grundbausteinen zusammensetzen. Das ist für viele Dinge wichtig, weil du damit sehr präzise steuern kannst, wie genau dein Programm funktioniert. Allerdings führt das auch dazu, dass Programme sehr schnell sehr viel größer werden als in anderen Sprachen. Und größere Programme führen fast automatisch zu mehr Fehlern.
Dadurch, dass du sehr präzise steuern kannst, wie das Programm abläuft, kannst du aber auch einige Fehler einbauen, die in anderen Sprachen so nicht möglich sind. In C kannst du Befehle wie "Schreibe 13 in Speicheradresse 24" ausführen. Direkte Zugriffe über Speicheradressen können sehr performant sein, haben aber auch das hohe Risiko, dass man falsche Adressen beschreibt, wenn man Rechen- oder Logikfehler im Code hat. Das ist nur ein Beispiel für die Fallstricke in C...

Moderne Hochsprachen wie Python und Java dagegen abstrahieren von der Speicherebene - du kannst nur mit Variablen arbeiten, also a = 13. Die richtige Speicheradresse suchen Compiler oder Laufzeitumgebung dann automatisch. Du konzentrierst dich also darauf, was dein Programm machen soll, nicht wie es das macht. Das ist sicherer, aber auch langsamer. Dafür bieten diese Sprachen aber viele viele Funktionen, durch die du dir eine Menge Code sparen kannst.

C++ ist irgendwo in der Mitte... C++ kann im Prinzip alles, was C kann, hat aber zusätzlich die ganzen Funktionen der modernen Hochsprachen und noch viele viele eigene Features. C++ ist ohne Zweifel eine der am schwersten zu erlernenden Sprachen (weil sehr umfangreich UND viele Fallstricke), aber auch eine der mächtigsten. C++ ist aber sehr kompatibel zu C, wenn du mit C anfängst kannst du also beinahe alles Gelernte zu C++ mitnehmen.

Praktisch ist es heute so:
C wird für sehr hardwarenahe Anwendungen genutzt, z.B. Betriebssysteme und Embedded Software (Also Programme, die oft ohne Betriebssystem auf einem Prozessor laufen, Steuersysteme für Autos und Flugzeuge und dergleichen).
C++ für Anwendungen, die ebenso auf hohe Performance angewiesen sind aber nicht so hardwarenah arbeiten: Adobe Photoshop, Spieleengines, Datenbanksysteme etc.
Python wird hauptsächlich für Skripte, Webserver und als "Steuerung" für andere Programme verwendet: Jemand könnte also ein schnelles Programm in C schreiben und dann über Python mit Daten füttern. Python ist sehr beliebt bei Aufgaben, die vielleicht 2-3 mal täglich anfallen, weil die Performance dort oft völlig egal ist.
Java und C# dann praktisch für alles andere (Android Apps, Büroanwendungen...).

c) Von Büchern zu Grundlagen kann ich dir nur abraten. Es gibt viele gute Bücher zu speziellen Themen oder um eine Sprache wirklich zu vertiefen, aber für die Grundlagen empfehle ich dir online Tutorials und z.B. adventofcode.com - auf der Seite gibt es einige kleine Aufgaben. Du bekommst immer irgendwelche Daten und kannst auf der Seite dann überprüfen, ob dein Ergebnis richtig ist.
 
Zuletzt bearbeitet:
Gut danke, das bringt schon etwas mehr Licht ins Dunkel. :daumen:

Also C und Python verwerfe ich dann mal und entscheide mich entweder für C++ oder für Java oder C#.

Das C++ sozusagen mehr bietet als C ist ja eigentlich auch klar, sonst wären die ++ ja irreführend. Aber was bedeutet C#, ist das auch sozusagen eine Modernisierung von C oder eine andere Variante für bestimmte Fälle, die an mancher Stelle mehr und an andere wieder weniger bietet als C?
Kann man denn z.B. in C# oder Java auch performante 3D-Spiele programmieren oder eine gute KI?
 
Mit Unity meinst du die GUI von Ubuntu-Linux? :huh:

Minecraft sieht grafisch nun nicht gerade so aus, als wollte ich sowas programmieren oder die Sprache lernen, in der das geschrieben wurde... :fresse:
 
Mit Unity meinst du die GUI von Ubuntu-Linux? :huh:

Minecraft sieht grafisch nun nicht gerade so aus, als wollte ich sowas programmieren oder die Sprache lernen, in der das geschrieben wurde... :fresse:

Eben, der arme Erfinder hat auch kaum mehr als ein Kaugummi und n halbes Glas Apfelsaft dafür bekommen. Mit solchem Geklecker wird sich der Tim wohl kaum befassen, da geht es um so viel mehr, obwohl ... um was ging es nochmal Tim? Was wolltest du nochmal Programmieren?

PS: Bevor ich einkaufen gehe schreibe ich auch immer einen Zettel vorher, mit Dingen die ich absolut nicht brauche, so vermeide ich unnütze Einkäufe, dauert eben immer etwas Zeit bis man von A-Z alles durch hat aber es ist den Aufwand wert, jede Woche aufs Neue. :daumen:
 
C# und C sind nur in der Syntax verwandt. In der Umsetzung auf dem Rechner ist C# Java deutlich ähnlicher als C.
Zu KI hab ich schonmal was geschrieben: Da ist Tensorflow Standard. Das ist zwar in C++ geschrieben, bedient man in der Regel aber aus Python heraus.
 
Zurück