Wiedereinstieg in's Programmieren nach 8 Jahren?

Anonymous

Vice Admiral Special
Mitglied seit
18.02.2004
Beiträge
673
Renomée
8
Standort
Dresden
Huhu.

Ich stehe hier momentan gerade vor einem kleinen Entscheidungsproblem, und hoffe,
daß ihr mir da weiterhelfen könnt.

Bis vor etwa 8 Jahren war ich recht aktiv in Sachen Assembler- und Pascal-
Programmierung, hab unter anderem auch kleinere 'Demos' gecoded... und dann ist
das Leben irgendwie recht hektisch geworden und ich bin hab die Coderei total an
den Nagel gehängt....

Und jetzt will ich damit wieder anfangen. Kenntnisse sind vorhanden vor allem mit
Pascal, Basic und Assembler, allerdings nur in reiner DOS-Umgebung und *nicht*
objektorientiert. Darauf muss ich halt aufbauen und hinzulernen. Das ist halt erst
mal meine Ausgangssituation.

Was ich suche, ist eine Programmiersprache, die folgende Punkte erfüllt:

* Pascal-ähnlicher Dialekt unter WinXP.
* einfacher Einstieg in objektorientieres Coden.
* einfache Einbindung von Assembler-Routinen.

Das ganze sollte dann auch noch einigermaßen resourcenfreundlichen
Code erzeugen und nicht auf *.NET oder ähnlichen Plattformen aufsetzen.

Hat da jemand von euch 'nen Tip, nach was ich da Ausschau halten sollte?

Dankeschön,
-Ano
 
Delphi könnte Deine Wahl sein. Es gibt eine kostenlose Version. Schau mal bei Borland vorbei. Literatur zur Objekorientierung besorgen und durchlesen. Tip: INet oder örtliche Bibliothek.
Assembler ist heute nur noch bei Treiber und Systemprogrammierung "gefragt". Aber wenns Spaß macht. Auch Asm ist in Delphi-Code einbindbar.
Du möchtest ressourcenschonenden Programmcode; nunja. Ersten was bedeutet ressourcenschonenden bei heutiger Hardware und zweitens ist diese Anforderung meines Erachtens bei zeitgemäßer Anwenundungsentwicklung nicht mehr realisierbar.
Ach ja: Dos war überschaubar und klar (ich liebe interrupts).
Viel Spaß
wori
 
Nimm C/++. Einmal kannst du damit problemlos Konsolenanwendungen schreiben, es ist viel verbreiteter als Delphi, C ist Pascal nicht so sehr unähnlich, und in die Objekorientierung kannst du langsam einsteigen, weil's auch ohne geht (ganz im Gegensatz zu Delphi). Dev-C++ ist zB. eine recht gute freie IDE für windows, und setzt auf GNU auf.
 
Delphi ist Pascal sicher am nächsten, Kenntnisse der Sprache sind nicht verkehrt, aber für einen Neuanfang würde ich auch zu C++ tendieren (oder C Lattenzaun, das ist denn aber schon eindeutig OO). Für einfache Sachen und zum "wieder warm werden" vielleicht wxBasic, eine Variante der wxWidgets, mit der sich schnell (kleinere) GUI-Anwendugen coden lassen.

Gruß

PI
 
Objective C ist auch noch eine interessante Sprache, aber ich weis net, ob's da für windows eine IDE gibt. Im Gegensatz zu C++ kannst du bei ObjC in reinem C proggen (bei C++ gibt's ein paas Sachen, die anders sind), und das OO Modell ist dem von C++ weit überlegen (auch dem von Delphi oder Java).
 
Auch jeder C++-Compiler muss 100% abwärtskompatibel zu C sein.

Also ich würde auf jedenfall etwas in C-Richtung machen, solche Sachen wie VB halte ich für etwas verkorkst, aber das ist meine persönliche Meinung. Der Persönliche Geschmack ist überhaupt sehr wichtig bei der Entscheidung für ein Programmiersprache, nicht umsonst gibt es die vielzitierten Glaubenskriege ;).

C++ finde ich persönlich etwas unkomfortabel, es dauert ewig bis man mal was mit GUI auf die Beine gestellt hat. Da finde ich Java besser, oder mein neuster Favorit seit 2 Wochen: C#, da gibts sogar ne kostenlose IDE von MS.

Wenn du mit der C-Syntax noch nicht vertraut bist, besorg dir erstmal nen einfachen C-Compiler (GCC mit Editor, Turbo C, oder auch Visual Studio C++ express) und fang mit Konsolenanwendungen an. Graphisch und OO geht immernoch später ;).
 
Die Sprache C++ enthält aber nicht das komplette C, ist einfach so. Vor allem bei den Zeigern verbietet C++ ein paar Sachen, die in C und ObjC erlaubt sind.
 
C ist Pascal nicht so sehr unähnlich
Das halte ich für ein Gerücht!
siehe auch obwohl C
www.bernd-leitenberger.de/pascal-und-c.shtml
oder
www.informatik.uni-bonn.de/~manthey/SS06/Abschlussvortraege/FolienImhoff.pdf
.... , und in die Objekorientierung kannst du langsam einsteigen, weil's auch ohne geht (ganz im Gegensatz zu Delphi).
Entweder OO richtig oder garnicht.
Wenn mit "Langsam einsteigen" ein Mischmasch aus OO und Prozedural gemeint ist; das funktioniert nicht. Es sind nämlich zwei sehr verschiedene "Denkstile" der Programmierung.
 
Das halte ich für ein Gerücht!
siehe auch obwohl C
www.bernd-leitenberger.de/pascal-und-c.shtml
oder
www.informatik.uni-bonn.de/~manthey/SS06/Abschlussvortraege/FolienImhoff.pdf

Entweder OO richtig oder garnicht.
Wenn mit "Langsam einsteigen" ein Mischmasch aus OO und Prozedural gemeint ist; das funktioniert nicht. Es sind nämlich zwei sehr verschiedene "Denkstile" der Programmierung.

Natürlich funktioniert das, und C ist Pascal sehr wohl ähnlich. Polemik wo jemand eine Sprache schlecht macht findest du im Netz zuhauf, zB. auch das hier: http://www.hicosoft.de/humor02.htm
Das dürfte ähnlich gehaltvoll sein wie dein Link, jedenfalls ist es mir beim Lesen so vorgekommen.

Man könnte es auch so sagen: C/++ ist die leistungsfähigere Sprache, die zwar mehr Einarbeitung erfordert (für jemanden der keine Ahnung hat lässt sich pascal sicher einfacher lesen), dann aber auch mehr kann (und schneller ist).
Zudem ist der Code übersichtlicher, wenn man sich an die Syntax gewöhnt hat, die vielen Möglichkeiten erfordern aber auch eine gewisse Disziplin, was under die Einarbeitungszeit fällt.

Der C-Syntax hat sich nunmal bei so vielen anderen Sprachen durchgesetzt (Java, JScript, PHP, Perl, C#, ...), das wäre nicht passiert, wenn der C Syntax ernsthafte Nachteile gegenüber dem von Pascal hätte. Zudem ist die einzige IDE die es für Delphi gibt, für große Projekte ungeeignet (in dem Zusammenhang find ich zB. auch das Argument, dass das kompilieren mit Makefiles länger dauert und umständlicher ist, zum schießen).

Delphi ist nunmal eine Sprache für einen schnellen Einstieg und einfache Projekte, C/++ kann aber einfach mehr und ist nach einer Eingewöhnung leistungsfähiger, auch was den Syntax betrifft.

PS OO erst ein bisschen und dann richtig, ist das beste Konzept. Vll geht das mit Delphi nicht, mit C++ schon ;).
 
Huhu.


* Pascal-ähnlicher Dialekt unter WinXP.
* einfacher Einstieg in objektorientieres Coden.
* einfache Einbindung von Assembler-Routinen.

-Ano

Punkt 1: spricht wie du sicher weißt und hier auch schon genannt wurde für Delphi
Punkt 2: kommt daran was für dich einfach ist: wie hier schon genannt kann man C++ oder Objektive C auch ganz ohne OO programmieren und OO Elemente schritt für schritt einführen . Nur vieleicht ist es besser eine Sprache wie Smalltalk oder java zu nehmen bei denen man gezwungen wird OO zu programmieren, denn dann lernt man es schneller.
Punkt 3: Da ich Dephi nicht kenne weiß ich nicht ob es da möglich ist. Würde auch gar nicht passen: Delphi ist zum schnellen programmieren von Programmen mit grafischen Oberfächen unter Windows gedacht und nicht zum zeitraubenden Handoptimieren mit inline assembler.
C hat dagegen schon immer die Möglichkeit inline Assembler zu verwenden, da C vorallem mit dem Gedanken an dumme Kompiler entwickelt wurde.

Deine Anforderungen wiedersprechen sich auch: OO heißt ja starke abstakton von der Maschienenebene ganz im Gegenteil zu Assembler.

Du solltest dich vieleicht eher fragen was du programmieren willst anstatt dich auf einen bestimmte Syntax festzulegen. Pascal Syntax ist halt nicht sehr verbreitet: Pascal, Delphi (sprich OO Pascal). Ada hat anscheinend auch einen an Pascal angelehnte Syntax.

Willst du zum Beispiel möglichst schnell Grafische Windows Programme schreiben sind warscheinlich die IDEs von MS und Borland erste Wahl egal ob die konkrete Sprache dann C++ VisualBasic oder Delphi ist.
 
Natürlich funktioniert das, und C ist Pascal sehr wohl ähnlich. Polemik wo jemand eine Sprache schlecht macht findest du im Netz zuhauf, zB. auch das hier: http://www.hicosoft.de/humor02.htm
Das dürfte ähnlich gehaltvoll sein wie dein Link, jedenfalls ist es mir beim Lesen so vorgekommen.

Ich verstehe nicht inwiefern der Vergleich der Sprachen polemisch ist weder beim ersten noch beim zweiten Link.
Es ging mir um einen Streit um die "bessere" Sprache.

Zudem ist die einzige IDE die es für Delphi gibt, für große Projekte ungeeignet (in dem Zusammenhang find ich zB. auch das Argument, dass das kompilieren mit Makefiles länger dauert und umständlicher ist, zum schießen).
Das gilt auch für die größeren Projekte in C die ich beruflich kennenlernen "durfte" .
Deshalb wurde ja auch objektorientiertes C entwickelt;D .

PS OO erst ein bisschen und dann richtig, ist das beste Konzept. Vll geht das mit Delphi nicht, mit C++ schon ;).
Das fällt dann vom Softwaredesign her unter schlechten Code.
Lerntechnisch halte ich es auch für besser erst eine Art der Programmierung richtig zu lernen und zu nutzen. Meiner Meinung nach fängt man am besten für Anwendungsentwicklung heute direkt mit OO und Java an.
 
Das gilt auch für die größeren Projekte in C die ich beruflich kennenlernen "durfte" .
Deshalb wurde ja auch objektorientiertes C entwickelt ."

Es gibt auch große Projekte in C, zB. der Linux Kernel mit seinen mehreren Millionen Codezeilen. Eine IDE braucht man dafür nicht.

Ich verstehe nicht inwiefern der Vergleich der Sprachen polemisch ist weder beim ersten noch beim zweiten Link.
Es ging mir um einen Streit um die "bessere" Sprache.

Der Typ aus dem ersten Link hat offensichtlich keine Ahnung/Erfahrung von/mit C/++.

Das fällt dann vom Softwaredesign her unter schlechten Code.

Das kommt stark drauf an, man kann OO sehr wohl gewinnbringend an einigen Stellen einsetzen, ohne, dass da was unsauber wird. Pauschalaussagen sind bei sowas fast immer falsch.
 
Es gibt auch große Projekte in C, zB. der Linux Kernel mit seinen mehreren Millionen Codezeilen. Eine IDE braucht man dafür nicht.

Es geht alles, da hast Du recht.
Mir ging es aber nicht um die IDE, sondern um das Programmierkonzept. Da bin ich der Meinung, dass bei großen Projekten objekt orientierter C++ Code deutlich einfacher, schneller erstellbar und wartbar ist als prozeduralem C-Code.

Bei Betriebssystemen wie Linux meine ich mich zu erinnern, dass der innerste Kern mit ASm und C hergestellt wird und der große Rest mit C++ objekt orientiert.


Das kommt stark drauf an, man kann OO sehr wohl gewinnbringend an einigen Stellen einsetzen, ohne, dass da was unsauber wird. Pauschalaussagen sind bei sowas fast immer falsch.
Stimmt Pauschalaussagen können falsch sein.
Nur die Vermengung von OO mit prozeduralem Code oder umgekehrt führt nach meiner Erfahrung sehr oft zu Problemen.

Schönen Abend
 
Stimmt Pauschalaussagen können falsch sein.
Nur die Vermengung von OO mit prozeduralem Code oder umgekehrt führt nach meiner Erfahrung sehr oft zu Problemen.

Kann ich nicht nachvollziehen. Wenn du dir für ein C Programm zB. 'ne Klasse für große Zahlen oder Vektoren schreibst, bringt das rein garnix durcheinander. Und gerade sowas ist ja oft der Einstieg in die OO Programmierung.
Und ein Alleskönner ist das eben auch nicht, man kann auch gerade mit OO viel Mist anstellen, genauso wie ohne. Es ist ein Hilfsmittel, das so einiges einfacher macht, manchmal aber auch einfach ein Klotz am Bein ist. Es ist immer eine Frage, wie man es einsetzt und ob es sich für den Zweck überhaupt eignet.

PS Der Linux Kernel besteht aus einem kleinen bisschen Asm und seeehr viel C. C++ nicht, und wenn ich mich da täuschen sollte, ist es in jedem Fall verdammt wenig.
 
Huhu,

sieht also so aus, als ob die Meinungen eindeutig zwischen Delphi
und C/C++ auseinandergehen...und da ist die Entscheidung für
mich eigentlich ziemlich eindeutig. C++ mag ja noch so genial
sein, die Syntax und die unlogische Wahl der Operatoren ist
finde ich einfach 'ne Frechheit. Mag sein, daß das nur Gewöhnungs-
Sache ist, und kein Problem mehr darstellt, wenn man's erst
mal gelernt hat... aber ich schreibe gern Code, der auch ohne
ellenlange Kommentare noch lesbar bleibt. ;)

Daher werd ich mich erst mal in Delphi einarbeiten. Für C++
ist später immer noch Zeit. :)

Grüße,
-Ano
 
wieso die Syntax ist doch toll :] immerhin erlaubt sie "Hacker auf selbstverwirlichungstripp-Code" wie diesen:
Code:
void InitBasis(){
    for( int i = 0; i <= storeMax(); ++i )
    {
        int einsen = 0, mask = 1 << N;
        while( ( mask >>= 1 ) > 0 && einsen < M + 1 )
            if( ( i & mask ) != 0 )
                einsen++;
        if( einsen == M )
            allPsi.push_back( i );
    }
    
    for( unsigned i = 0; i < allPsi.size(); ++i ){
        cout << i << " ";
        printb( allPsi[i], true, N ), printf( "\n" );
    }
    getchar();
    
}

will dich nicht von deiner Entscheidung abbringen (und ganz bestimmt nicht mit so einem Beispiel ;) ) . Aber es sei vieleicht noch angemerkt, dass man am Ende also Programmierer eh nicht um C-Syntax rumkommt dafür gibt es zu viele wichtige und weit verbreitete Sprachen aus den verschiedensten Bereichen bsp: C, C++, Objective C, Java, PHP.
Naja auf jeden Fall viel Erfolg.
 
Code:
void InitBasis(){
    for( int i = 0; i <= storeMax(); ++i )
    {
        int einsen = 0, mask = 1 << N;
        while( ( mask >>= 1 ) > 0 && einsen < M + 1 )
            if( ( i & mask ) != 0 )
                einsen++;
        if( einsen == M )
            allPsi.push_back( i );
    }
    
    for( unsigned i = 0; i < allPsi.size(); ++i ){
        cout << i << " ";
        printb( allPsi[i], true, N ), printf( "\n" );
    }
    getchar();
    
}

Ich sag doch, ist alles eine Gewöhnungsfrage. Wenn du mir jetzt noch sagst, was die Variablen beinhalten, die nicht in der Funktion deklariert sind (insb. M unt N), kann ich dir sagen, was der Code macht.
Auch wenn das einige jetzt nicht glauben werden, aber mit ein bisschen Übung kann man sowas recht schnell lesen.
 
wieso die Syntax ist doch toll :] immerhin erlaubt sie "Hacker auf selbstverwirlichungstripp-Code" wie diesen
Der Code ist ja noch toll lesbar, die hohe Schule ist dann die Anwendung des Bedingungs- und Kommaoperators, z.B:

for (int i = a ?(int) (b = c--,d++): (int)b&=^0xff; ....)

Ich habe das jetzt nicht ausprobiert, aber ich bin zuversichtlich, dass es funktioniert. Anbei ist noch der klassische Artikel, dass C und Unix nur ein Joke waren:

X
X In an announcement that has stunned the computer industry, Ken Thompson,
X Dennis Ritchie and Brian Kernighan admitted that the Unix operating
X system and C programming language created by them is an elaborate April
X Fools prank kept alive for over 20 years. Speaking at the recent
X UnixWorld Software Development Forum, Thompson revealed the following:
X
X "In 1969, AT&T had just terminated their work with the GE/Honeywell/AT&T
X Multics project. Brian and I had just started working with an early
X release of Pascal from Professor Nichlaus Wirth's ETH labs in
X Switzerland and we were impressed with its elegant simplicity and
X power. Dennis had just finished reading 'Bored of the Rings', a
X hilarious National Lampoon parody of the great Tolkien 'Lord of the
X Rings' trilogy. As a lark, we decided to do parodies of the Multics
X environment and Pascal. Dennis and I were responsible for the operating
X environment. We looked at Multics and designed the new system to be as
X complex and cryptic as possible to maximize casual users' frustration
X levels, calling it Unix as a parody of Multics, as well as other more
X risque allusions. Then Dennis and Brian worked on a truly warped
X version of Pascal, called 'A'. When we found others were actually
X trying to create real programs with A, we quickly added additional
X cryptic features and evolved into B, BCPL and finally C. We stopped
X when we got a clean compile on the following syntax:
X
X for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8 )%2))P("| "+(*u/4)%2);
X
X To think that modern programmers would try to use a language that
X allowed such a statement was beyond our comprehension! We actually
X thought of selling this to the Soviets to set their computer science
X progress back 20 or more years. Imagine our surprise when AT&T and
X other US corporations actually began trying to use Unix and C! It has
X taken them 20 years to develop enough expertise to generate even
X marginally useful applications using this 1960's technological parody,
X but we are impressed with the tenacity (if not common sense) of the
X general Unix and C programmer. In any event, Brian, Dennis and I have
X been working exclusively in Pascal on the Apple Macintosh for the past
X few years and feel really guilty about the chaos, confusion and truly
X bad programming that have resulted from our silly prank so long ago."
X
X Major Unix and C vendors and customers, including AT&T, Microsoft,
X Hewlett-Packard, GTE, NCR, and DEC have refused comment at this time.
X Borland International, a leading vendor of Pascal and C tools,
X including the popular Turbo Pascal, Turbo C and Turbo C++, stated they
X had suspected this for a number of years and would continue to enhance
X their Pascal products and halt further efforts to develop C. An IBM
X spokesman broke into uncontrolled laughter and had to postpone a
X hastily convened news conference concerning the fate of the RS-6000,
X merely stating 'VM will be available Real Soon Now'. In a cryptic
X statement, Professor Wirth of the ETH institute and father of the
X Pascal, Modula 2 and Oberon structured languages, merely stated that P.
X T. Barnum was correct.
X
X In a related late-breaking story, usually reliable sources are stating
X that a similar confession may be forthcoming from William Gates
X concerning the MS-DOS and Windows operating environments. And IBM
X spokesman have begun denying that the Virtual Machine (VM) product is
X an internal prank gone awry.
X {COMPUTERWORLD 1 April}
 
Zuletzt bearbeitet:
Wobei da wirklich langsam der Einsatzzweck fehlt. Sowas hier hatte ich schon (sinngemäß) im Einsatz, aber besonders kompliziert ist es eigentlich auch nicht.

Code:
void CreateBox(int n, vector<VecN>& list)
{
  for(int i=0, VecN tmp(n);i<pow(2.0, (float) n);i++)
  {
    for(int j=0; j<n;j++) tmp[j]=(double) ( (i&(1<<j))>>(j-1) );  
    list.push_back(tmp);
  }
}

Na? Wer kann sagen, was das macht? ;) VecN ist ein n-dimensionaler Vektor, der Arrayoperator greift auf die entsprechende Koordinate zu (0...n-1). Sowas ist übrigens saulahm, und weil's in dem Prog um Performance ging, hab ich das Array mit den Koordinaten in der VecN Klasse dann doch public gemacht, und bei den krittischen Sachen direkt darauf zugegriffen (um zB. die Vektoraddition zu implementieren, die als überladener operator auch saulahm ist).

EDIT: Und die Fehler hab ich auch korrigiert, kommt davon, wenn man sowas aus dem Gedächtnis aufschreibt, obwoht das Prog schon einige Zeit her ist.
 
Zuletzt bearbeitet:
Punkt 3: Da ich Dephi nicht kenne weiß ich nicht ob es da möglich ist. Würde auch gar nicht passen: Delphi ist zum schnellen programmieren von Programmen mit grafischen Oberfächen unter Windows gedacht und nicht zum zeitraubenden Handoptimieren mit inline assembler..

Also als erstes mal kann z.B. Turbo Delphi sehr gut mit Inline-Assembler arbeiten.

Als Zitat aus der Feature-Matrix:
32-bit inline assembler with support for the full Intel x86 instruction set (including Intel Pentium Pro, Pentium III, Pentium 4, Intel MMX, SIMD, Streaming SIMD Extensions, SSE, SSE2, and SSE3, and AMD 3DNow!

Des weiteren kann man sagen, dass viele zwar meinen Delphi wäre nur für das schnelle basteln von GUI-Anwendungen geeignet - es kann aber bei weiten mehr als das (nähmlich so ziehmlich alles was andere auch können).

Gruß,
BoMbY
 
Des weiteren kann man sagen, dass viele zwar meinen Delphi wäre nur für das schnelle basteln von GUI-Anwendungen geeignet - es kann aber bei weiten mehr als das (nähmlich so ziehmlich alles was andere auch können).

Gruß,
BoMbY

Na dann schreib mit Delphi doch mal eine große Anwendung die mit mehreren Threads läuft. Klar kann man das, genauso kann ich das auch mit einem Hexeditor in binär coden ;).
 
Also Multi-Threading in Delphi ist auch kein Problem - hab ich alles schon gemacht. Die Frage ist: Was ist eine große Anwendung für Dich, und wieso sollte man das nicht mit Delphi machen können?
 
Versuch sowas mal zu debuggen, afaik fehlt dem Debugger die Möglichkeit dazu. Ganz trivial: Versuch mal ein Betriebssystem mit Delphi zu schreiben, wird nicht funktionieren. Wenn man es geschickt anstellt, kann man mit C sogar einen kompletten Bootsektor ohne asm schreiben.
 
Okay, also einen Bootsektor wirst Du damit nicht kompilieren können - es ist ja auch nur ein Win32-Compiler (was nicht heißt, dass man keinen anderen Pascal-Compiler finden könnte, der das kann). Und Windows-Treiber schreibt man wohl auch besser mit dem Visual Studio und dem DDK (bei Delphi ist das schon was Frickelei). Aber für normale Windows-Programme und Dienste ist schon ganz gut.

Das Debugging sollte übrigens auch mit mehren Threads und großen Applikationen keine Probleme haben.

Als Überblick, was das alles kann, hier einmal ein Direktlink zur Feature-Matrix von Turbo Delphi: http://www.borland.com/resources/en/pdf/products/turbo/turbo_delphi_feature_matrix.pdf

Edit: Fällt mir übrigens gerade auf: Die Indy-Komponenten (für diverse Netzwerkprotokolle, etc.), die in der kostenlosen Explorer Version von Turbo Delphi fehlen, kann man sich hier selbst runterladen: http://www.indyproject.org/
 
Zuletzt bearbeitet:
Zurück
Oben Unten