PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einige Sprachen gelernt, was nun?


firewars
2002-11-20, 16:31:31
Hallo,

ich programmiere derzeit in PHP und würde sagen, ich beherrsche es relativ gut. Mein Ziel ist aber, Anwendungen oder gar 3D-Engines zu coden - klar liegt dazwischen die halbe Welt, war aber nur ein Beispiel.

Die Frage ist nun, was ich jetzt lerne, nach PHP halt. C? C++? Oder doch erst weitere Skriptsprachen?

Bin für jegliche Empfehlungen dankbar :)

Elvin
2002-11-20, 16:55:48
Ich würde sagen du solltest auf alle Fälle eine Objektorientierte Sprache lernen.
:D :D :D
Entweder fängst du jetzt also mit C++ an oder gleich mit Java.

firewars
2002-11-20, 17:13:32
In die Richtung gedacht habe ich schon, allerdings weiß ich nicht, wie ich anfangen soll. Habe mit C++ immer schon mal etwas rumgespielt, aber erschien es mir doch immer äußerst komplex.

Gibt es gute Bücher, für absolute Neulinge?

Einfachkrank
2002-11-20, 19:27:23
Hi,

also wenn du nur vorhast reine Windows Anwendungen zu programieren, dann würde ich dir jetzt spontan Delphi enpfehlen. Aber fallst du wirklich mehr in Richtung der 3D Welten möchtest, dann musst du schon eine gute Grundlage haben auf die du mit API`s wie DirectX und OpenGL aufbauen kannst. Man kann auch das mit Delphi hinbekommen, aber ich selbst bevorzuge C/C++. Erst habe ich einigermaßen C gelernt und dann einen kleinen Umstieg auf C++ gemacht, wobei es keine große Änderung ist ;)
PHP und Java ist nach meinem Wissen etwas anderes, mehr wie HTML, bin ich mir aber auch nicht sicher. Und HTML oder Java würde ich nicht mit C/C++ vergleichen, da C/C++ viel logischer aufgebaut sind, es gibt in HTML afaik nicht mal Schleifen, oder doch? Und objektorientiert muss nicht immer sein, OGL ist z.B. eine reine "Statemachine" ;)
Also schau dir wirklich vorher noch mal ein paar Sachen an und überleg dir das gründlich, denn es ist nicht gerade von heute auf morgen getan :D

MFG Einfachkrank

Stone2001
2002-11-20, 20:05:13
Originally posted by Einfachkrank
PHP und Java ist nach meinem Wissen etwas anderes, mehr wie HTML, bin ich mir aber auch nicht sicher. Und HTML oder Java würde ich nicht mit C/C++ vergleichen, da C/C++ viel logischer aufgebaut sind, es gibt in HTML afaik nicht mal Schleifen, oder doch?

hmm, das stimmt nicht ganz!!!!
Java ist eine Programmiersprache, dessen Syntax sich stark an C/C++ orientiert, um gerade C-Programmierer die Umschulung leichter zu machen! ;) Java ist sozusagen aus C++ hervorgegangen! (Java gibt es erst seit Mitte der 90iger, C++ ist ca. 10 Jahre älter und C stammt aus den 70igern) Java ist noch stärker objektorientierter als C++.
Java ist (bzw. soll) für Einstieger leichter zu lernen sein, als C++, da man sich um einige Sachen als Programmierer nicht kümmern muß (Pointer, Garbage Collection,..)
HTML (Hypertext Markup Language) wurde dazu geschaffen um Webseiten zu erstellen und nicht um Programme zu schreiben! HTML ist also keine Programmiersprache (zumindest für mich nicht).

BTW: Ich persönlich würde dir raten Java oder C++ zu lernen!

firewars
2002-11-20, 20:11:25
Ein Vorteil hätte es - schließlich ist der PHP-Syntax stark an den von C(++) angelegt :)

Bleibt also die Frage Java oder C++? Vorteile/Nachteile?

Captain America
2002-11-20, 20:22:47
Jaja, die Qual der Wahl.

Zuerst mal, egal welche Programmier-Sprache du lernst, für nahezu alles kannst du SQL gebrauchen. SQL ist ein wirklich riesiges Thema, und es ist mächtig. Wenn du Programmierer als Beruf anstrebst, lern SQL!

Dann wäre da noch XML. Auch das eine Pflicht für Profis. Aber IMHO etwas trocken und eher für Fortgeschrittene geeignet.

Essentiell für dich als PHP Programmierer ist HTML 4.0 mit CSS 2.0.

Ich weiss, du hast nach einer Programmiersprache gefragt, aber diese 4 Sprachen sind für alle Programmiersprachen gültig und gehören einfach dazu. Wenn du nicht weisst wofür das gut sein soll, frag hier noch mal nach.

So, nun zu richtigen Programmiersprachen: ich finde dass Java am besten ist. Das ist Geschmackssache, denn Java hat neben einer excelenten Bibliothek, Syntax und Plattformunabhängigkeit ein grosses Problem: Geschwindigkeit. Wenn du "normale" Programme schreiben willst, die nicht speziell für ein Betriebssystem sind, hast du aber mit Java einen Freund fürs Leben gefunden.

Wenn du aber nur für ein OS oder Leistungskritische Anwendungen programmieren willst, würde ich dir zu C# raten. AFAIK ist es für Anfänger besser als C++.

Schreib doch mal genau auf was du schon kannst, und was du gerne für den Anfang programmieren willst. Mein genereller Tipp ist übrigens Java, ausser wenn du wirklich 3D machen willst.

firewars
2002-11-20, 20:29:08
Können?..

- HTML
- CSS (was man so baucht :D)
- PHP
- Für PHP-Datenbankapplikationen nötiger MySQL-Syntax
- Ein bis zwei Funktionen in VB
- "Grund-Syntax" von C++ wegen PHP

Edit: Was programmieren? Eine tolle 3D-Engine ;)
Naja, zumindest ist das mein Hauptziel. Momentan fällt mir (leider) nichts sinnvolles ein, weshalb ich auch in einer gewissen Klemme stecke - was soll ich lernen?

Edit II: Etwas XML kann ich auch, aber auch eher durch Spielerei, allerdings mehr, als in VB/C++ ;)

Elemental
2002-11-20, 21:41:47
Also ich würd auf jeden Fall zu C++ raten. Evtl. noch C#; is doch das einzige gute an .NET :D

mfG
Elemental

firewars
2002-11-20, 21:49:01
Wäre dankbar, wenn mir jemand die "Hauptvorteile" unter C, C++, C# und .NET erklären würde. Danke :D

MeLLe
2002-11-20, 22:32:10
Originally posted by Stone2001
Java gibt es erst seit Mitte der 90iger, C++ ist ca. 10 Jahre älter und C stammt aus den 70igern
Mathe schadet manchmal auch nicht. No offense - just kidding ;)

Zum Thema: ich würde C/C++ empfehlen. Einfach weil es praktisch die Möglichkeiten nach allen Seiten offen lässt.

grakaman
2002-11-20, 22:50:22
[Wäre dankbar, wenn mir jemand die "Hauptvorteile" unter C, C++, C# und .NET erklären würde. Danke ]

hallo

also unter .net ist der code wie bei java plattformunabhängig. man nennt ihn bei .net managed code. diese zwischensprache (msil genannt) wird erst auf dem zielrecher just in time compiliert. das hat wesentliche vorteile. zum einen ist der code plattformunabhängig, zum anderen kann direkt für die lokale hardware optimiert werden (der compiler optimiert für die cpu). .net c# programme sind so zum teil mal schneller, mal langsamer als mit vc++ 6 kompilierte programme, das kommt ganz auf das design an. aber 90% der leistung von vc++6 wird immer erreicht. die msil ist quasi ein assembler derivat, deshalb ist die just in time compilierung auch überhaupt nicht zeitkritisch. einmal kompilierte methoden werden im cache gehalten und müssen nciht mehr neu kompiliert werden. du kannst sogar directx/opengl programme damit entwerfen. also ich beschäftige mich gerade mit c# und finde diese sprache echt spitze.
aber wenn du unbedingt willst, kannst du mit gen.exe auch nativen code erstellen.

mfg

firewars
2002-11-21, 13:44:38
Danke euch allen. Bleibt nur noch die Frage: "Dann" Direct3D oder OpenGL? ;)

Einfachkrank
2002-11-21, 15:07:17
Originally posted by Stone2001


hmm, das stimmt nicht ganz!!!!
Java ist eine Programmiersprache, dessen Syntax sich stark an C/C++ orientiert, um gerade C-Programmierer die Umschulung leichter zu machen! ;) Java ist sozusagen aus C++ hervorgegangen! (Java gibt es erst seit Mitte der 90iger, C++ ist ca. 10 Jahre älter und C stammt aus den 70igern) Java ist noch stärker objektorientierter als C++.
Java ist (bzw. soll) für Einstieger leichter zu lernen sein, als C++, da man sich um einige Sachen als Programmierer nicht kümmern muß (Pointer, Garbage Collection,..)
HTML (Hypertext Markup Language) wurde dazu geschaffen um Webseiten zu erstellen und nicht um Programme zu schreiben! HTML ist also keine Programmiersprache (zumindest für mich nicht).

BTW: Ich persönlich würde dir raten Java oder C++ zu lernen!
Hey, das wusste ich nicht so genau :). Aber Java wird schon für Internet Programmierung genutzt, oder? Wie viel Unterschied besteht denn zwischen Java und C++? Wenn es net so viel ist, wäre es ja mal interessant für Homepage Bau :D

MFG Einfachkrank

Elemental
2002-11-21, 20:12:24
Also Java und C++ sind schon 2 grundverschiedene Welten.
Java stufe ich als leichter zu erlernen ein. Aber ich find C++ "schöner" ;D


mfG
Elemental

Marcel
2002-11-21, 20:21:58
Originally posted by grakaman
also unter .net ist der code wie bei java plattformunabhängig. man nennt ihn bei .net managed code. diese zwischensprache (msil genannt) wird erst auf dem zielrecher just in time compiliert. das hat wesentliche vorteile. zum einen ist der code plattformunabhängig, zum anderen kann direkt für die lokale hardware optimiert werden (der compiler optimiert für die cpu). .net c# programme sind so zum teil mal schneller, mal langsamer als mit vc++ 6 kompilierte programme, das kommt ganz auf das design an. aber 90% der leistung von vc++6 wird immer erreicht. die msil ist quasi ein assembler derivat, deshalb ist die just in time compilierung auch überhaupt nicht zeitkritisch. einmal kompilierte methoden werden im cache gehalten und müssen nciht mehr neu kompiliert werden.
mfg

Das mit der Plattformunabhängigkeit ist die offizielle Variante. Vergesst nicht, dass man es mit Microsoft zu tun hat. Sprich, 'ne fette Lib, ein Teil ist offen dokumentiert und wird dann auch auf anderen Plattformen als .NET-Framework implementiert, aber die richtig geilen Sachen kennt nur MS & deren Compiler selbst.

Das Just-In-Time-Compiler-Prinzip kennt man ja von Java. Wo kommen die "90%" eigentlich her? Ich mein, geJITtetes Java soll ja auch rasend schnell sein.

Gruß,
Marcel

grakaman
2002-11-21, 21:01:24
@ marcel

die msil ist absolut plattformunabhängig. aber du hast schon recht, andere frameworks (wie mono) implementieren nur einen bruchteil der klassen, nämlich die cli. aber die plattformunabhängigkeit ist mehr oder weniger bloss ein nebenprodukt. hauptsächlich kommt es wohl darauf an, programme in einer laufzeitumgebung gesichert ablaufen zu lassen und für die lokale umgebung optimieren zu können.
das mit den 90% hab ich nicht nachgemessen sondern mir von einem ms spezialisten im supportbereich sagen lassen. aber schon mal rein subjektiv kommen mir die .net programme echt ziemlich schnell vor.
ein weiterer vorteil liegt auch darin, dass du eigentlich in allen .net sprachen programmieren kannst und dein code immer identisch ist bzw. mit absoluten minimalen abweichungen und somit auch gleichschnell.

mfg

Nasenbaer
2002-11-21, 21:05:03
Also wenn du 3D-Engines und dem Anschein nach wohl in Richtung Spieleprogrammierung tendierst wie ich übrigens auch =), dann empfiehlt sich C++. In Zusammenhang mit DirectX (was besser zu C++ passt || OpenGL eher zu C zur Zeit) wirst du geradewegs auf dein Ziel zumarschieren können.

Als Bücher kann man folgende empfehlen:

Jetzt lerne ich C++ (vom Markt & Technik Verlag) (http://www.mut.de/main/main.asp?page=bookdetails&productID=8295)

Und wenn du C++ recht gut kannst sind die Bücher von Stefan Zerbst geeignet: http://www.zfx.info/Books.php
Habe sie zwar selber noch nicht gelesen aber die Inhaltsangabe und die Screenshots lassen ne Menge erhoffen. Und bestellen werde ich sie mir auf jeden Fall. :)

MFg Nasenbaer

firewars
2002-11-25, 16:00:05
Danke, danke :)
Dennoch die Frage: DirectX oder OpenGL ?
Wieder so eine Sache.. ;)

zeckensack
2002-11-25, 16:22:46
Beides :)

OpenGL ist schön zum Lernen und Basteln, 'rapid prototyping' und sowas. Wenn man mal ganz schnell 'nen Wurfel auf den Schirm haben will und nur zehn Minuten Zeit hat, und die Performance erstmal egal ist, dann nimmt man OpenGL.

Der wichtigste sonstige Unterschied ist der Umgang mit den Hardwarefeatures.
1)Bei der Erkennung der Features geben sich die beiden nichts. Es wäre schnulli zu behaupten daß es einen konzeptionellen Unterschied zwischen der Abfrage von DX-Caps und OpenGL-Extensions gäbe.

2)OpenGL hat neue Features immer zuerst, weil die Hersteller Extensions selbst definieren können. Auch kriegt man unter OpenGL idR das Maximum aus der Hardware heraus (zB GF4: NV_register_combiners und NV_texture_shader sind viel flexibler als PS1.3).

3)Der Vorteil von D3D ist daß wenn eine Karte ein Feature unterstützt, dann tut sie es immer auf die definierte Art und Weise, genau wie alle anderen die dieses Feature beherrschen. Um unter OpenGL für mehrere Karten Pixel Shader zu schreiben, ist (hoffentlich bald nicht mehr) erforderlich, für jeden Hersteller andere Extensions zu nutzen. Der kleinste gemeinsame Nenner, nämlich PS1.1 existiert unter OpenGL nicht.

Captain America
2002-11-25, 16:25:09
Originally posted by Marcel Ich mein, geJITtetes Java soll ja auch rasend schnell sein.


Schön wärs ;(

firewars
2002-11-25, 16:27:05
Hmm. Und was ist leichter bzw. schwieriger zu erlernen/anzuwenden? Deiner (eurer) Meinung nach .. :)

Einen gefärbten Wüfel/eine gefärbte Pyramide habe ich in der Tat nach 'ner Stunde in OpenGL hinbekommen, DirectX habe ich noch nicht ausprobiert :)

grakaman
2002-11-25, 19:54:17
[Schön wärs ]

ich kenn mich zwar nicht mit java aus, aber selbat das müsste doch zig mal schneller sein als php bei vergleichbaren anwendungsgebiet oder?

mfg

Nasenbaer
2002-11-25, 20:10:24
Originally posted by firewars
Hmm. Und was ist leichter bzw. schwieriger zu erlernen/anzuwenden? Deiner (eurer) Meinung nach .. :)

Einen gefärbten Wüfel/eine gefärbte Pyramide habe ich in der Tat nach 'ner Stunde in OpenGL hinbekommen, DirectX habe ich noch nicht ausprobiert :)

Für ein Dreieck unter D3D brauch man ähnlich lange soviel kann ich sagen. :-)

Da ich aber über keine tiefgreifenden Kenntnisse beider API's verfüge kann ich nichts über komplexe Dinge sagen. :<

Mfg Nasenbaer