PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eure absolute Lieblingsprogrammiersprache?


\²³/
05.05.2004, 18:49
Ich verzichte jetzt mal auf eine neue Umfrage, sondern verlinke auf Planet3dGames:
http://www.planet3dgames.de/forum/showthread.php?t=584

Meine Lieblingssprache ist nach wie vor Delphi.

stav
05.05.2004, 19:43
eindeutig Delphi für mich - schneller als Visual Basic und trotzdem einfacher wie C++ ! Und das obwohl das Pascal Gerüst schon uralt ist!

TiKu
05.05.2004, 19:48
Es war mal Visual Basic (ohne .net). Aber weil das ein ziemlicher Krampf ist, Programme unter WinXP auch nach WinXP aussehen zu lassen, mag ich es nicht mehr so. Inzwischen bin ich Fan von C++ und C#.

The_Fang
05.05.2004, 19:57
PHP und Viusal Basic kann ich am besten, was auch bedeutet das sie am meisten Mag, da ich bei denn am schnellsten das gewünschte Ergebnis erreiche.

Meine absolute Hasssprache zur Zeit ist, Haskell bzw. Hugs98.

Kickin_Eagle
05.05.2004, 19:58
Ich bin bei VB geblieben. Und zwar aus dem einfachen Grund,
dass ich oft Makros in Excel VBA am Arbeitsplatz schreiben muss.



Wegen >> Programme unter XP ausehenen lassen wie XP<<:

Meist kommt es mir auf ein effizientes Programm an, und nicht
auf buntes, animiertes Aussehen. Mir ist schon klar, das C++ / C#
Code effizienter als VB/A ist, es ist nur eben nicht als
Makrosprache im Office Packet verfügbar...

TiKu
05.05.2004, 20:11
Naja, ich lege auch(!!) sehr viel Wert drauf, dass sich meine Programme nahtlos in das Windows-Design einfügen. Effizienz usw. sind schon sehr wichtig, aber ich hasse hässliche Programme. Und es sieht IMHO ziemlich blöd aus, wenn unter WinXP ein Programm unthemed ist. Genauso hässlich finde ich Programme, die unter Win2k oder so den XP-Style imitieren (also gethemed aussehen).

i_hasser
05.05.2004, 20:23
Assembler -> weil es einfach ne schöne Sprache ist ;D

C -> weil damit die schönsten Hacks möglich sind und...

Java -> weil man da wirklich das Gefühl hat OO zu programmieren und nicht den ganzen systemnahen Krempel hat.

mtb][sledgehammer
05.05.2004, 20:33
Ich arbeite am meisten mit Delphi. Grund ist zum einen, dass meine erste sinnvolle Programmiersprache Turbo Pascal war (davor noch ein wenig Logo, aber ich wüsste nicht wie man da eigenständige Programme macht), und somit Syntax und Co einfach zu erlernen war. Zweiter wichtiger Punkt: es kostet nix (in der völlig ausreichenden personel Edition).
Visual Basic habe ich nie probiert, nur früher mal Q-Basic, was ich total hässlich fand. Außerdem viel zu teuer ;).
C++ wollte ich eigentlich immer probieren, jedoch hatte ich nie Zeit bzw. Lust was neues zu lernen. (und nachdem was mein Info Dozent so davon hält, bin ich im Moment auch nicht so motiviert mir das anzutun, allerdings ist es eben doch weit verbreitet, sodasss ichs mir doch mal zu Gemüte führen sollte)
Ansonsten lerne ich gerade Java, was definitv seine Vorteile hat (auch gegenüber Delphi). Besonders die Tatsache des es sehr wenig "Lücken" gibt finde ich gut. Allerdings kann ich noch keine enormen Vorteile gegenüber Delphi feststellen.

An Delphi gefallen mir vor allem die Befehle: die englischen Befehle und Operatoren lesen sich IMO wesentlich einfacher als einfache Sonderzeichen (auch wenn diese schneller zu schreiben sind. ;Bsp: not vs !). Oder Dinge wie der Zuweisungsoperator: in der Mathematik ist es :=, also auch in Delphi. Aber in Java spart man Zeichen und schreibt = und muss dafür den Vergleichsoperator == benutzen. IMO nicht gerade sehr lesefreundlich.
Aber das ist sicherlich Geschmacksache. Insgesamt muss ich sagen, dass mit Delphi eine sehr schöne Objektorientierte Sprache existiert, obwohl sie eine Erweiterung des uralten Pascal ist.

Edit: @ intel_hasser:
Ja Assembler ist wirklich schön, zumindest das was ich von x86 kenne. IA 64 wollte ich nicht coden ;D

Hannnibal
05.05.2004, 20:41
Moin,

mein favorit ist ganz klar java, in verbindung mit eclipse bin ich wunschlos glücklich...

mfg

TiKu
05.05.2004, 20:41
Original geschrieben von mtb][sledgehammer
Oder Dinge wie der Zuweisungsoperator: in der Mathematik ist es :=, also auch in Delphi. Aber in Java spart man Zeichen und schreibt = und muss dafür den Vergleichsoperator == benutzen. IMO nicht gerade sehr lesefreundlich.Und in VB schreibt man sowohl bei Vergleichen als auch bei Zuweisungen = ;D

mtb][sledgehammer
05.05.2004, 20:44
Original geschrieben von TiKu
Und in VB schreibt man sowohl bei Vergleichen als auch bei Zuweisungen = ;D Dann ist ja gut, dass ich mir das noch nicht angetan habe *abgelehnt

TiKu
05.05.2004, 20:50
Och so schlecht ist die Sprache nicht. Das mit dem = ist kein Problem, wenn man es weiß. Die Lesbarkeit leidet da nicht drunter.
Dafür kann VB Strings wie Zahlen vergleichen, also auch per =. Bei C++ usw. geht das ja nicht. Und mit VB kann man Select-Case (in C++ heißt's switch-case) auch Strings vergleichen was mit Delphi z. B. nicht geht.
Jede Sprache hat ihre Vor- und Nachteile. Langsam ist VB übrigens auch nicht unbedingt. Außer bei String-Sachen, aber wenn man da geschickt proggt, ist es auch da schnell.

Naja, is ja am Ende egal.

i_hasser
05.05.2004, 21:02
Ich denke das ist alles eine Gewöhnungssache. Inzwischen ist mir der Delphi und VB Style von zb. For-Schleifen einfach zuwieder, weil ich an den C-Style gewohnt bin. C ist kürzer und wenn man sich daran gewöhnt hat genauso gut zu lesen - überlegt doch mal, dadurch hast du mehr Platz zum kommentieren ;)

Ich schreib lieber eine Zeile und dadrüber einen Kommentar. Dann prüfe ich 1mal ob die Zeile auch wirklich stimmt und les mir sonst immer nur den Kommentar durch.
Bei Dephi oder VB schreib ich 3 Zeilen Code und muss mich jedesmal da durchquälen. Und das := von Pascal mag zwar mathematisch korrekter sein, ich find es aber einfach nur abartig. == ist auch eine Gewöhnungssache, ich finds auch viel logischer.

Dafür kann VB Strings wie Zahlen vergleichen, also auch per =. Bei C++ usw. geht das ja nicht.

Und ganz natürlich geht das, musst nur den = Operator überladen. Ich habs ja früher selbst nicht geglaubt, aber C++ ist einfach fast überall besser als VB.


Bei C++ kann man die Sprache selbst erweitern, bei so ziemlich vielen anderen Sprachen (insbesondere VB) geht das net.

ericszb
05.05.2004, 21:06
also die geschw. von vb.net ist nicht schlecht finde ich, da hat sich einiges getan, deshalb vb.net ;D

mfg eric

i_hasser
05.05.2004, 21:16
@Tiku

#include <iostream>
#include <string>

using namespace std;


int main()
{
string *a,*b;

a=new string("abc");
b=new string("cde");

if(*a==*b) printf("equal\n");
else printf("not equal\n");

delete a;
a=new string("cde");

if(*a==*b) printf("equal\n");
else printf("not equal\n");


return 0;
}



Jag das mal durch den g++, funktioniert einwandfrei -> ausgabe: "not equal" \n "equal"

Du kannst wie gesagt mit C++ wirklich alles machen was auch mit VB geht. Du kannst über die Klassen nämlich alles was du willst implementieren. Du kannst zb. auch einen neuen Datentyp (wirklich einen neuen Typ, nicht wie bei VB) kreieren. Also sagen wir eine unendlich lange Zahl. Dann kannst du in die Klasse sämtliche Rechenoperationen implementieren (+, -, *, /, und den cast) und du kannst das ganz normal wie zb. einen integer benutzen.

Lopi
05.05.2004, 21:16
X86 - ASM (für Windows Umgebung empfehle ich MASM8.2 !!!), C++ Microsoft (erzeugt zu grosse Dateien :( , C++ Intel (schnell)
PPC - C++ (wegen der portierbarkeit ;D )

Sargnagel
05.05.2004, 21:20
- C wenn es auf Performance ankommt;
- Perl für kleine Dinge zwischendurch;
- JAVA wenn es mal nicht ohne GUI geht;

- C++ und Assembler stehen noch auf meiner ToDo-Liste ;D

@Fortran:
Ist es immer noch so, daß die Fortran-Compiler performanteren Code erzeugen als C-Compiler? Ist da überhaupt was dran oder sind das einfach nur "Vorurteile" von Fortran-Anhängern? ;)
Falls Fortran überlegen sein sollte, werde ich das auch noch auf meine Liste setzen.

i_hasser
05.05.2004, 21:20
Wenn Assembler dann aber bitte richtig mit NASM ;)

TiKu
05.05.2004, 21:27
@intel-hasser: Ja, ich weiß, dass man mittels Operator-Überladung usw. das alles machen kann. Mir ging's mehr um das standardmäßige.

C++ ist extrem mächtig, aber eben diese Mächtigkeit hat schon so manchen Anfänger "erschlagen".;)

@Sargnagel: Zumindest bei Matrizenoperationen ist es lt. einem unseren Profs noch so.

Sargnagel
05.05.2004, 21:33
Original geschrieben von TiKu
@Sargnagel: Zumindest bei Matrizenoperationen ist es lt. einem unseren Profs noch so.
Das wird wohl daran liegen, daß die Fortran-Compiler besser die Parallelisierbarkeit von Algorithmen erkennen können und entsprechenden Code für z.B. SSE erzeugen. Aber andererseits kann das der C-Compiler von Intel ebenfalls ... hmmm ... vielleicht ist C etwas schwerer zu durchschauen als Fortran - zumindest für den Compiler. ;)

Lopi
05.05.2004, 21:52
@intel_hasser ist dir nasm ein tool bekannt das es ermöglicht aus einer dll die imports
zu generieren (mir nicht)

i_hasser
05.05.2004, 21:59
Den DLL Header kannst du in Nasm direkt implementieren.
Hab sowas schonmal gemacht, hat funktioniert ;D

@Tiku
Gerade das ist die Stärke von C++, das praktisch alles in C++ selbst implementiert wurde (so uA auch Strings). Smalltalk ist da noch ein bisschen schärfer.

Das Beispiel oben lässt sich auch noch extrem verkürzen, so ungefähr:

#include <iostream>
#include <string>

using namespace std;


int main()
{
string a="abc",b="cde";

if(a==b) printf("equal\n");
else printf("not equal\n");

a="cde";

if(a==b) printf("equal\n");
else printf("not equal\n");


return 0;
}


Das sieht für einen Anfänger sicherlich deutlich einfacher aus (keinerlei Zeiger).
Die String-Klasse ist übrigens Standart bei C++ - also genau wie der String bei VB.

Pilli
05.05.2004, 22:23
naja... liebling oder nicht, ich hab leider wenig vergleichsmöglichkeiten, da ich bis zu meinem Studium nie programmiert hatte...
nu kenn ich grundzüge von assembler (aber nur wirklich den ganz kleinen anfang) und werde in C++ eingewiesen, was mir gar nicht mal so unlieb ist, da mich C/C++ interessieren...
Von daher würd ich im moment wohl für C++ stimmen *g*

Krümmelmonster
05.05.2004, 22:44
batch ist mir am liebsten... :)

Koraktor
05.05.2004, 22:47
Das ist 'ne schwere Frage...
da ich ziemlich viele Sprachen (zumindest in den Grundzügen) kenne.

Aber ganz oben steht da klar PHP, auch wenn viele es nicht unbedingt als Programmiersprache ansehen.
Dann wären da noch Delphi (natürlich auch Pascal), ein bisschen Java, Perl und C++.

Und außer Konkurrenz wohl auch HTML, CSS, JavaScript und VBScript - die kann man nun wirklich nicht zu Programmiersprachen zählen, aber ich benutze sie halt häufig.

Insgesamt tendiere ich aber deutlich zu PHP (+HTML+CSS+JS), weil ich sehr viel mit Webseiten zu tun habe.

Tom24
05.05.2004, 23:21
searching for treasure
swimming deep beneath the C
i'm diving for perl

]DarkDemon[
06.05.2004, 07:02
es geht doch nichts über C++ :)
naja, ok, AmigaBASIC war auch ganz nett damals...
Java mache ich grade im Informatik-Studium, da wächst die Abneigung von Vorlesdung zu Vorlesung!

JackDMF
06.05.2004, 07:45
Ich bin ganz klarer Fan von C++,
hab ich schon immer faszinierend gefunden,
wie umfangreich die Sprache ist...
Hier auf Arbeit programmieren wir in
C und CA OpenROAD, is ne Sprache die
DB-orientiert arbeitet und ähnliche Syntax
aufweist wie VB, aber mächtiger ist,
v.a. weil SQL implementiert ist...
Der einzige Nachteil ist, das es ne
Interpretersprache ist.

Winfo
06.05.2004, 08:02
Für mein Studium mußte ich mal C++ lernen. Naja, damals fand ich das ganze recht schön.

Inzwischen bin ich jedoch gänzlich zu Java gewechselt. Würde mich zwar selbst nicht wirklich als Profi bezeichnen, aber für meine Zwecke reichts. Nachdem ich mich nun aber auch lange Zeit mit der Programmierung von EJBs und JSPs beschäftigt habe, komme ich nun langsam zu den Applikationen zurück und beschäftige mich im Moment mit Swing.

Gruß
Torsten

[P3D] Crazy_Chris
06.05.2004, 11:09
Da ich zurzeit nur Java machen muß ist dies meine Lieblingssprache. ;D Pascal hatte ich mal in der Schule, war auch ganz nett.

Will mich aber nicht festlegen da ich mich noch mit C, C++, und Assembler beschäftigen muß. :P

TommySZB
06.05.2004, 11:47
Ich bin überzeugter VB/VBA/VB .NET Anhänger. Die Sprache ist mächtig (durch .NET steht sie C# in nur wenigen Dingen nach), schnell (hat mal jemand Hardcore VB5 gelesen, da waren C++ MFC Programme langsamer als gut optimierte VB Programme) inzwischen dürfte bei .NET die Geschwindigkeit gleich der von C++, C# sein, da alles durch die CLR muss.

C++ ist nicht schlecht, aber für jemanden, der von VB kommt einfach anstrengend.

Gruss

illu@work
06.05.2004, 12:07
Also von der Geschwingdikeit dürfte keine OO Sprache an C++ rankommen. Das die
MS-Compiler bei VB schneller sein mögen wundert mich aber nicht - VB ist Microsofts Steckenpferd... Bei C/C++ empfehle ich ohnehin den Borland C-Builder.

Nebenbei - wenn man C/C++ drauf hat , kann man quasi jede andere Sprache in kürzester Zeit.
Mein neuer Favorit ist nebenbei XML mit seinen ganzen Untersprachen wie XSLT, XSL-FO ,XPath...

Tom24
06.05.2004, 12:11
genau VB ist das mächtigste und der Borland C Builder ist empfehlenswert... hier gehts so richtig ab.

TommySZB
06.05.2004, 12:20
Original geschrieben von Tom24
genau VB ist das mächtigste und der Borland C Builder ist empfehlenswert... hier gehts so richtig ab.

Hast du die Beiträge gelesen? Das mächtigste? Ich hab nie vom Superlativ geredet sondern davon, dass VB nur noch in wenigen Dingen C# nachsteht ;)
Einen Vergleich zu Borland C Builder kann ich natürlich nicht liefern, aber in einem Geschwindigkeitspunkt dürfte VB vorne liegen gegen C, die Entwicklungsgeschwindigkeit, ich hab das Gefühl (ohne mich in C++ wirklich gut auszukennen) dass ich in VB eine Zeile brauche und in C++ für den selben Kram 5 Zeilen, ist nicht immer so, aber in manchen Bereichen leider schon. Da ist auch ein grosser Unterschied in Richtung .NET, die Anpassung in Richtung C halt. Ist ne persönliche Meinung aber ich mag VB :))

Gruss

SKar
06.05.2004, 13:33
...ist seit neustem Eiffel . Vom System her genial, und wenn man dem Erfinder glauben darf (und ich tu das jetzt einfach mal..) wohl die einzig wahre OO - Sprache...! ;D

i_hasser
06.05.2004, 13:34
Irgendwie mussten solche Flames kommen.

Also ich kenn VB.net leider nicht weil mir die GUI einfach viel zu überladen war, aber VB6 ist gegen C++ ein Lacher (sowohl in Punkto Geschindigkeit, als auch in Leistungsfähigkeit). Und ich hab früher viel VB6 geproggt, ich kenn die Sprache ;)

Das soll aber natürlich nicht heißen, dass die Sprache durchgehend schlecht ist.

The_Fang
06.05.2004, 13:41
Hat jemand von euch mal mit einer funktionalen Programmiersprache zutun gehabt?


Wo bekomme ich denn Delphi Personal für umsonst?

i_hasser
06.05.2004, 13:44
Auf der Borland HP gibts eine alte Version runterzuladen (glaub 3.0 oder 5.0).

SKar
06.05.2004, 13:46
Original geschrieben von The_Fang
Hat jemand von euch mal mit einer funktionalen Programmiersprache zutun gehabt? Haskell und Prolog kenn ich ein bischen, wobei kennen wohl übertrieben ist.. ich konnte einfach jeweils die Aufgaben lösen ;D Ist schon ein ziemlich Unterschied zu imperativen Programmiersprachen - hat man es aber mal im Griff, kann man seh elegante und kurze Algorithmen schreiben...

illu@work
06.05.2004, 14:02
@Tom24

Na welche Entwicklungsumgebung würdest DU denn empfehlen wenn der C-Builder so schlecht ist?
Wenn jetzt Visual.NÄT kommt müsste ich aber ganz herzlich lachen.....

Campari
06.05.2004, 14:03
Hatte mich vor einigen Jahren mal gelegentlich mit RGH Profan beschäftigt, falls das wem was sagt :).

Dizzy_Ti
06.05.2004, 14:12
Ich mag c++ und c#,wobei mir persönlich die .NET Api besser gefällt als die WinApi.

sniper.de
06.05.2004, 16:22
ich steh total auf PHP, CSS und C++

wobei ich Delphi absolut nicht leiden kann.

Kaum hatte ich mit PHP angefangen, eine so einfache Sprache und sowas von Logisch, dann habe ich mir ein wenig was in C++ angeschaut.
Nehmen sich nicht gerade viel die beiden Sprachen.

Besonders mit PHP kann man da gut einsteigen.
php ist besser zum Einsteigen als Delphi, weil Delphi Pascal benutzt..

i_hasser
06.05.2004, 16:33
PHP und C/++ haben den selben Syntax, das wars auch schon ;)

Mit C++ kannst du Sachen machen, die bekommst du mit PHP nichtmal nährungsweise hin, schau dir mal Klassen an.
Dafür lassen sich mit PHP auch "schöne" Hacks realisieren, was aber natürlich nicht immer von Vorteil ist. Aber all das ließe sich eben auch sauberer in C++ realisieren.

sagat
06.05.2004, 17:40
Im Informatikstudium (2.Semester) behandeln wir Java und C++. Java hat von C++ und von vielen anderen Programmiersprachen gelernt und versucht das Beste aller Sprachen zu vereinen. Beide Sprachen haben bestimmte Vorteile, aber Java gefällt mir vom Aufbau besser.

C++ ist sehr weit verbreitet und ziemlich schnell, aber das Konzept ist in Teilen nicht so sehr durchdacht und nicht intuitiv zu benutzen. Man muss mit C++ sehr viel Erfahrung haben um sichere und fehlerfreie Programme schreiben zu können. Der allergrößte Teil der Software ist in C++ geschrieben und man findet immer wieder die gleichen Fehler in den Programmen, Buffer Overflows. Sie entstehen wenn wenn der Programmierer zu wenig Speicher reserviert und das Programm über den reservierten Speicher hinausschreibt. Außerdem überprüft C++ auch keine Grenzen von Arrays. Bei einem [10]-Array kann man auch darüber hinaus Zugreifen und Schreiben. C++ verwendet auch einen One-Pass Compiler und eine Funktion muss "weiter" oben definiert werden, damit man sie verwenden kann. Der Compiler (gcc unter Linux) gibt sehr mysteriöse Fehlermeldungen aus und die Fehlersuche kann ganz schön dauern.

C++

Vorteile:

- schnell
- sehr weit Verbreiten
- viele Einsatzgebiete

Nachteile:

- nicht sicher (Buffer Overflows)
- Syntax oft nicht einheitlich
- Fehlersuche schwierig und langwierig
- Plattformabhängig

Java

Vorteile:

- Plattformunabhängig
- sicher
- besser Aufbau (Packages ...)
- stark objektorientiert

Nachteile:

- langsamer
- Code durch Objektorientierung länger


Von unserem Praktikumsbetreuer der für die ESA arbeitet, hat uns Java an Herz gelegt. Schnellere Entwicklungszeiten, bessere "Fehlersicherheit" und Fehlerüberprüfung, hat er als Vorteile genannt. Er schreibt auch Programme für das Militär und hat uns hier den Artikel gegeben.

http://capjo.bei.t-online.de/Java in the Military.pdf

i_hasser
06.05.2004, 17:44
C++ ist doch jünger als Java... :]

Desswegen sind einige Dinge bei Java auch nicht ganz so ausgereift wie bei C++, zb. die Vererbungen.

Hannnibal
06.05.2004, 17:47
Original geschrieben von intel_hasser

Desswegen sind einige Dinge bei Java auch nicht ganz so ausgereift wie bei C++, zb. die Vererbungen.


Moin i-h,

warum ist bei java die vererbung nicht ausgereift?

mfg

sagat
06.05.2004, 18:04
Der Java-Standard wird weiterentwickelt und bald kommt Java 1.5 heraus.

Der C++-Standard wurde irgendwann festgelegt und seitdem nicht weiterentwickelt.

i_hasser
06.05.2004, 18:15
Ja, aber Java kann zb. keine Mehrfachvererbungen. Sicher, das ist in 90% der Fälle nicht weiter schlimm, aber bei solchen Sachen ist C++ eben mächtiger (trotzdem mag ich auch Java ;)).

sagat
06.05.2004, 18:19
Mehrfachvererbung hat man bei Java absichtlich weggelassen, da es eine zu große Fehlerquelle war. Statt Mehrfachvererbungen gibt es bei Java die Interfaces.

i_hasser
06.05.2004, 18:25
hmm *noahnung*

Ich habs anders gehört. Meines Wissens hat man in C++ so einige der OO-Features von Java integriert und noch erweitert. Was wurde eigentlich die erste Version von Java und C++ festgelegt?

Winfo
06.05.2004, 18:35
Original geschrieben von intel_hasser
Meines Wissens hat man in C++ so einige der OO-Features von Java integriert und noch erweitert. Was wurde eigentlich die erste Version von Java und C++ festgelegt?

Nee nee. Is genau anders rum. Bei Java hat man von C++ abgekupfert. Allerdings wurden dabei wie schon gesagt, ganz gezielt einige Teile von C++ weggelassen. Dazu zählt neben der Mehrfachvererbung auch die Zeiger. Das geschah deswegen, weil bei der ursprünglichen Konzeption von Java die Stabilität die höchste Priorität hatte.

Das wiederum wurde begründet mit der Tatsache, daß Java (ehm. Oak) ursprünlich nicht als Programmiersprache für PCs erdacht wurde, sondern um damit alltägliche Geräte zu steuern wie Geschirrspül- oder Kaffeemaschinen. Und keiner wirklich ne Kaffeemaschine mit Blue-Screen wollte :p
Dieses Konzept wurde bei Sun Anfang der 90er, also nach C++ erdacht. Doch man konte sich nicht richtig durchsetzen. Daher wurde auch die Weiterentwicklung der Sprache eine ganze Zeit eingefroren. Erst mit dem Aufkommen des Internets in der zweiten Hälfte der 90er Jahre konnte Java sein Comeback feiern.

Gruß
Torsten

i_hasser
06.05.2004, 18:44
Ok - macht java noch ein bisschen sympathischer ;)

sniper.de
06.05.2004, 18:54
Original geschrieben von intel_hasser
PHP und C/++ haben den selben Syntax, das wars auch schon ;)

Mit C++ kannst du Sachen machen, die bekommst du mit PHP nichtmal nährungsweise hin, schau dir mal Klassen an.
Dafür lassen sich mit PHP auch "schöne" Hacks realisieren, was aber natürlich nicht immer von Vorteil ist. Aber all das ließe sich eben auch sauberer in C++ realisieren.

naja PHP ist ja auch auf das WEB beschränkt, C++ hat eben andere Anwendungsgebiete ^^

i_hasser
06.05.2004, 18:59
PHP und C++ haben bis auf den Syntax wirklich so gut wie nix gemein. Versuch mal eine Klasse in PHP zu schreiben und all solche Sachen. Es gibt sehr viele Sprachen die den C Syntax benutzen, weil er einfach leistungfähig ist. Da wären zb. Java, JavaScript, Perl und eben auch PHP (ich hab bestimmt mehr ausgelassen als ich genannt hab).

Die Sprachen benutzen alle den C-Syntax. Bei all den Sprachen bekommst du mit for(i=0;i<123;i++) {...} eine for-Schleife, trotzdem sind alles verschiedene Sprachen (für i ist hier ein gültiger Bezeichner einzusetzen, bei PHP muss zb. noch ein "$" davor).

Koraktor
06.05.2004, 19:20
Keine Klassen in PHP!?

Na dann kuck mal hier: http://www.php.net/manual/de/ref.classobj.php

Obwohl die nur sehr selten zur Verwendung kommen. Bei PHP-Scripten, braucht man das meistens einfach nicht - da liegt der Fokus doch mehr auf Content Managment und Datenbanken.

illu@work
06.05.2004, 19:36
Pardon - C++ ist viel älter als Java. C++ wurde bereits mitte der 80er auf den Markt geworfen, kurz nach Objective-C. Java wurde erst durch Sun gegen Mitte der 90er bekannt.
Man könnte sagen Java ist eine Untermenge von C++ mit einigen Verbessrungen was die OO angeht.
Aber Gerade die schönen Bufferoverflows von C(++) erlauben ganz tolle Sachen im Bereich der Systemprogrammierung ;D

i_hasser
06.05.2004, 19:43
Original geschrieben von Koraktor
Keine Klassen in PHP!?

Na dann kuck mal hier: http://www.php.net/manual/de/ref.classobj.php

Obwohl die nur sehr selten zur Verwendung kommen. Bei PHP-Scripten, braucht man das meistens einfach nicht - da liegt der Fokus doch mehr auf Content Managment und Datenbanken.

Dann mach mir mal Ableitungen davon und morphe die Klasse ein bisschen ;) - geht net.

Das ist ja auch garnet der Zweck von PHP.


Aber Gerade die schönen Bufferoverflows von C(++) erlauben ganz tolle Sachen im Bereich der Systemprogrammierung ;D

*chatt*

So kann man es natürlich auch sehen *lol*

Java bietet für mich den Vorteil der Gummizelle - egal was man auch für Blödsinn anstellt, es schmiert nix ab um man bekommt immer schöne Fehlermeldungen... bei C/++ dagegen viel zu oft den "Segmentation Fault".

[ab]noname
07.05.2004, 06:00
Zum Topic:

C++

INTRU
07.05.2004, 08:55
Zu Java VS. C++:

Wurde da nicht ein wesentlicher Punkt vergessen? Speicherverwaltung, Speicherzugriff

Java ist wohl etwas einfacher zu lernen...

BoMbY
07.05.2004, 10:13
Original geschrieben von intel_hasser
Dann mach mir mal Ableitungen davon und morphe die Klasse ein bisschen ;) - geht net.

Das ist ja auch garnet der Zweck von PHP.


Naja, da wäre ich nicht so voreilig. Das Klassenmodell in PHP wurde/wird für die Version 5 komplett überarbeitet. Es wird damit um einiges mächtiger als noch in Version 4. Siehe z.B. http://www.zend.com/php5/articles/engine2-php5-changes.php

m.f.g.
BoMbY

i_hasser
07.05.2004, 14:01
Original geschrieben von INTRU
Zu Java VS. C++:

Wurde da nicht ein wesentlicher Punkt vergessen? Speicherverwaltung, Speicherzugriff

Java ist wohl etwas einfacher zu lernen...

Ich find das in C++ genauso einfach. Nur wenn du unbedingt auf C zurückgreifen willst solltest du wissen wovon zu sprichst ;)

Was ist denn an new() und * so schwer? Malloc und sowas kann dir in C++ völlig egal sein, du brauchst es nicht.

sagat
07.05.2004, 14:26
Er meinte ja nicht C++ im Vergleich zu C sondern zu Java. In Java brauch man sich um den Speicher meistens gar nicht zu kümmern, da im Hintergrund ein Garbage-Collector läuft, der nicht mehr referenzierte Objekte automatisch löscht. Man muss den Speicher selbst gar nicht mehr aufräumen. Bei Programmen, die länger laufen (Serverprogs) kann das in C++ zu Problemen führen. Das Programm beansprucht Speicher und gibt ihn per Delete nicht wieder frei und der beanspruchte Speicher wird immer größer. Das sind dann diese Speichlecks. Bei UT2004 hab ich das letzte mal davon gelesen, dass dieses Speicherleck dort behoben wurde.

Ray
08.05.2004, 18:28
Lieblingsprogrammiersprache?
Man verwendet die Sprache, welche für die Erledigung einer Aufgabe am Besten geeignet ist.
Da ich vor allem im Embedded Bereich arbeite, eindeutig C mit einer gewissen Portion Assembler für den jeweiligen Microcontroller. Je nach Plattform (16- bzw. 32 Bit und vorhandenen Resourcen) kommt auch C++ und in jüngster Zeit sogar Java für die Firmware dazu.
Auf dem PC, z.B. für eine Simulation der Firmware, wieder C, Oberfläche bzw. Umgebung in C++. Zum Vereinfachen von Build-Umgebungen, diversen Tools etc. meist Perl.

Ciao,
Ray

UeB
12.05.2004, 19:54
also ich kann der Meinung von bernd leitenberger (http://www.bernd-leitenberger.de/echte-programmierer-neu.html) anschließen was c betrifft.

als ich c++ im Studium lernen musste (hatte vorher nie was mit programmieren gemacht) war auch mein erster Gedanke bei schleifen: wie unlogisch!!!

Erklärung:
ich will das der Computer etwas so oft wiederholt bis eine von mir definierte Bedingung eintritt (wahr wird). das ist meiner Meinung nach die "intuitive" Logik die einem als erstes in Sinn kommt. wie ist es in c! eine Bedingung wird so lange geprüft bis sie falsch und dann wird die schleife abgebrochen. so ein Quark. das ist natürlich etwas ganz simples und man lernt es einfach und gut ist. aber meiner Meinung nach ist die c Syntax voller gegen die "Intuition" gerichtet Elemente. und somit nicht leicht erlernbar.


naja eigentlich bin ich nicht kompetent genug hier mit zureden weil ich bis heute nicht programmieren kann. das eine Semester Informatik das ich gemacht habe hat mich doch eher abschreckt. in dem einen Semester wurde uns nämlich c++ in einem abartigen Tempo um die Ohren gehauen. nach der 4 Woche bin ich geistig total ausgestiegen.
(trotzdem den Schein gerade so mit 4.0 geschafft ;D) )

ich habe Informatik (ich studiere eigentlich Physik) nur als Nebenfach gemacht. dennoch musste ich die hauptfachvorlesung besuchen. das war mir einfach viel zu stressig im ersten Semester Mathe und Physik Vorlesung, die auch alles andere als Zuckerschlecken waren dazu noch 2 mal in der Woche physikalisches Praktikum wo ich pro Protokoll einen ganzen Tag beschäftigt war. naja ich hab halt dann meine Schwerpunkte NICHT auf Info gesetzt.

@intel_hasser unser Info Prof hat uns "verboten" stdnamespace zu benutzen, dass war seiner Meinung nach schlechter Programmierstil. wir mussten dann halt immer 15 "using" vorranschreiben :]

i_hasser
12.05.2004, 20:05
*lol*

Sowas... :-X

Schlechter Programmierstiel, ich glaub mich tritt'n Pferd. In meinen C Programmen praktiziere ich vielleicht schlechten Programmierstiel, aber ein using namespace std ist doch nix verwerfliches - solange man nicht 40 Includes hat.

PuckPoltergeist
13.05.2004, 19:10
Original geschrieben von intel_hasser
*lol*

Sowas... :-X

Schlechter Programmierstiel, ich glaub mich tritt'n Pferd. In meinen C Programmen praktiziere ich vielleicht schlechten Programmierstiel, aber ein using namespace std ist doch nix verwerfliches - solange man nicht 40 Includes hat.

Das kommt auf das jeweilige Projekt/Programm an. Per default "using namespace std" zu machen ist schlechter Programmierstil. Schreib mal so eine Qt-Applikation. Es gibt ja nicht umsonst die Bereichsauflösung.

DarkAvenger
13.05.2004, 19:15
c++

Früher dachte ich, wer braucht OO. Jetzt habe ich es verstanden und will es ncith mehr missen. Nichtsdestotrotz sind streams schrott (insbesondere, wenn es auf performance ankommt...).

i_hasser
13.05.2004, 19:16
Aber C++ Anfänger damit zu quälen ist absoluter Blödsinn ;)

Früher sind C++ Programme nicht umsonst auch ohne Namespaces ausgekommen, also es ist imho Geschmackssache, in Java hast du auch kein Namespaces. Klar bieten die auch ihre Vorteile (und bei richtig großen Projekten würde ich die vermutlich auch nehmen), aber es ist eben wie schon gesagt Geschmackssache, und bei kleineren Programmen lohnt es sich einfach nicht.

Desswegen würd ich das beim besten willen nicht als schlechten Stiel bezeichnen.

PuckPoltergeist
13.05.2004, 19:21
Original geschrieben von intel_hasser
Aber C++ Anfänger damit zu quälen ist absoluter Blödsinn ;)

Früher sind C++ Programme nicht umsonst auch ohne Namespaces ausgekommen, also es ist imho Geschmackssache, in Java hast du auch kein Namespaces. Klar bieten die auch ihre Vorteile (und bei richtig großen Projekten würde ich die vermutlich auch nehmen), aber es ist eben wie schon gesagt Geschmackssache, und bei kleineren Programmen lohnt es sich einfach nicht.

Desswegen würd ich das beim besten willen nicht als schlechten Stiel bezeichnen.

Wenn du es nicht von klein auf lernst, machst du es später immer wieder falsch. Eine Ausnahme zur Regel zu erheben ist nun mal schlechter Programmierstil. Namensräume sind schon was feines und die hast du auch in Java (oder C). Vielleicht sind sie dort nicht so flexibel einsetzbar, aber sie existieren. Ich habe hier gerade ein etwas größeres Projekt, welches auch recht stark Gebrauch von selbstdefinierten Namensräumen macht.

i_hasser
13.05.2004, 19:58
Bei Java gibts afaik keine Namensräume, bzw. werden bei Java die Klassen als Namensräume gebraucht, das imho sowieso viel logischer ist (wozu hat man schließlich Klassen).


Es ist Geschmackssache, kein schlechter Stiel.

Hannnibal
13.05.2004, 21:58
Moin,
dafür gibt es die packages :).
mfg

i_hasser
13.05.2004, 22:03
hmm ok, gut, ist aber deutlich statischer als bei C++ - und vor allem gibts bei Java auch feste Regeln für die Benutzung, also imho hats da mehr Sinn und durch die Vorgaben zur Benutzung ist es bei Java auch schlechter Stiel sich nicht daran zu halten.

Woerns
14.05.2004, 13:07
Mit der Frage nach der Lieblingssprache ist für mich auch die Frage nach dem Stil verbunden.

Z.B. kommt man in Assembler am besten mit dem Kopf durch die Wand. Ich habe auf dem 6510 viel Spaß damit gehabt. :)

Heute schreibe ich vormehmlich in C++ (meist VC++ mit MFC). Die Sprache bietet unglaubliche Möglichkeiten, aber sie verbietet nicht viel, d.h. sie lässt auch miserablen Programmierstil zu. Deshalb gibts gelegentlich Kritik, z.B. weil jemand immer noch die eigentlich antiquierte Möglichkeit von Feldern[] benutzt anstatt Arrays zu verwenden, die ihre Größe selber wissen und die man nur danach fragen muss, wenn man indiziert. Solche "Offenheiten" gegenüber den alten C-Gewohnheiten laste ich aber nicht der Sprache an, sondern das ist für mich eine Frage des Stils.

In C++ kann man oo programmieren und gleichzeitig noch die leistungsfähigen Pointer verwenden. Nebenbei sind mir schon einige studierte Informatiker begegnet, die ein Problem mit Pointern hatten ("da wirds dann schwierig"). Das ist ungefähr so, als wenn ein studierter Germanist sagt, das Alphabet wäre soweit ganz gut, nur mit den Umlauten tue er sich schwer.

Mit den Microsoft Foundation Classes ist Mehrfachvererbung leider nicht möglich, insofern muss man hier manchmal von der reinen oo Lehre abweichen. Aber das geht zu Lasten von Microsoft und nicht von C++.

So, jetzt habe ich genug von C++ geschwärmt und muss der Fairness halber noch hinzu fügen, dass ich zwar viel mit alten Sprachen gemacht habe (Assembler, Basic, Fortran, Turbopascall), mir aber der Einblick in z.B. C# oder Java noch fehlt.
Übrigens ist Fortran meines Wissens nach schneller, weil es einen direkteren Speicherzugriff hat, als C und natürlich erst recht als C++. MfG

i_hasser
14.05.2004, 13:14
Also nix gegen []-Arrays - die sind zwar statisch, aber dafür deutlich schneller als die OO-Arrays und oft benutzte ich die gerade desswegen.

Die kann man natürlich auch per malloc/realloc dynamisch gestallten, aber das lohnt sich nur da wo ein OO Array wirklich performance kostet.

Woerns
14.05.2004, 14:21
Stimmt, aber wenn man aufführt, dass die []Arrays unter C++ keine Speicherabsicherung haben, dann muss man auch dazu sagen, dass diese Speicherabsicherung in anderen Sprachen auch Performance kostet. Du MUSST sie ja nicht benutzen unter C++, KANNST aber trotzdem mit ihnen arbeiten, wenn du Performanceprobleme hast. In Normalfällen, wenn du Arrays z.B. der Ordnung halber verwendest, solltest du m.E. oo Arrays nehmen.

BTW ich hatte noch nie ein Performanceproblem aufgrund von mathematischen Berechnungen. Wenn doch, dann eher wegen Multithreading und der Übergabe von Daten zwischen einzelnen Threads. MfG

i_hasser
14.05.2004, 14:23
Schau mal in den Progg-Wettbewerbthread ganz oben - da findest du Links zu vielen weiteren Threads in denen nur die mathematische Leistung der CPU das Limit setzt ;D ;)

Woerns
14.05.2004, 14:36
Wenns es dir ausschließlich aufs Rechnen ankommt, dann bist du mit C++ ohnehin schlecht bedient. Das ist wie mit Kanonen nach Spatzen schießen. Die Goodies von C++, wie Vererbung mit virtuellen Funktionen, etc. werden durch einen abstrahierten und damit langsameren Speicherzugriff verwirklicht. Stichwort: Late Binding. Wer die reine Rechenpower sucht, findet die in einer anderen Sprache. MfG

i_hasser
14.05.2004, 14:43
Leider braucht man in der Praxis aber oft eine Kombination aus beiden, also viel Rechenpower und trotzdem eine sehr gute Strukturierung. Spiele zb.

PuckPoltergeist
14.05.2004, 15:14
Original geschrieben von Woerns
BTW ich hatte noch nie ein Performanceproblem aufgrund von mathematischen Berechnungen. Wenn doch, dann eher wegen Multithreading und der Übergabe von Daten zwischen einzelnen Threads. MfG

Bei Multithreading dürftest du keine Performanceproblem auf Grund von Datenübergabe bekommen, sondern bestenfalls durch die Synchronisation. Andernfalls wäre Multithreading witzlos.

Woerns
14.05.2004, 16:20
Ich mache Multithreading nicht, um Performance zu gewinnen, sondern weil es programmiertechnisch erforderlich ist, dass verschiedene Threads gleichzeitig laufen. Ein typisches Beispiel ist, dass neben einem Hauptprogramm der serielle Port abgehört werden muss, der seine Daten asynchron empfängt. Insofern ist das nicht witzlos sondern notwendig. Die seriellen Daten landen dann z.B. in einem FIFO und ein anderer Thread schaut ständig nach, ob was neues vom Port im FIFO angekommen ist. Das ist typischerweise eine Schleife, die eine kurze Schlafpause einlegt, bevor sie das nächste Mal nachschaut. Wenn man sehr kurzfristig (ca. Echtzeit) auf neue Daten reagieren muss, muss diese Schlafpause kurz sein und der entsprechende Thread nimmt sich gehörig Rechenzeit, weil er ständig in Habacht-Stellung ist.

Für solche Probleme gibts viele Beispiele und meistens liegts daran, dass eine Schnittstelle schlecht programmiert und/oder spezifiziert ist, wenn man Probleme bekommt. Leider bin ich oft auf vorhandene Sachen meiner Kunden angewiesen, die anstelle einer sauberen Implementierung der Synchronisierung lieber die Priorität ihrer Threads erhöhen, damit es funktioniert - mit verheerenden Folgen für die anderen Threads.

Naja, genug geschwafelt. Ein schönes Wochenende allen. MfG

DarkAvenger
14.05.2004, 17:10
Ich mache Multithreading nicht, um Performance zu gewinnen, sondern weil es programmiertechnisch erforderlich ist

Naja, ich würde es eher so formulieren: Threads zu benutzen macht die Sache einfacher.

Ich selbst arbeite im Zuge meiner Diplomarbeit an einer load-balancing library, die MPI einsetzt. Dabei wird die Kommunikation nicht-blockierend durchgeführt. Da würde sich ein thread anbieten, der das Ende der Kommunikation checkt und dann weiter macht (etwa beim routing, müßte ja empfangen-gesendet werden). Doch aus Gründen der Portabilität wurde das ganze single-threaded programmiert und es klappt ganz gut. Deshalb ist ein threading nicht *erforderlich*. Ich denke zwar, daß eine gethreadete Variante einfacher wäre und evtl auch mehr performance hätte, aber wenn man nicht wxWidgets oder ähnl einetzen will, hat manseinen liebe Not, das ganze protabel zu gestalten. Die library lief ursprünglich auf Solaris udn nun unter Linux und auch WinNT.


Eine Frage an die OO Experten:

Könntet ihr mir kurz den Unterschied der beiden arrays erzählen? Bezieht ihr euch auf new/malloc? Ich kann doch auch bei new über den Bereich hinausschießen, wenn ich es als array verwalte? Was wäre da der Unterschied?

PuckPoltergeist
14.05.2004, 23:41
Original geschrieben von Woerns
Ich mache Multithreading nicht, um Performance zu gewinnen, sondern weil es programmiertechnisch erforderlich ist, dass verschiedene Threads gleichzeitig laufen. Ein typisches Beispiel ist, dass neben einem Hauptprogramm der serielle Port abgehört werden muss, der seine Daten asynchron empfängt. Insofern ist das nicht witzlos sondern notwendig. Die seriellen Daten landen dann z.B. in einem FIFO und ein anderer Thread schaut ständig nach, ob was neues vom Port im FIFO angekommen ist. Das ist typischerweise eine Schleife, die eine kurze Schlafpause einlegt, bevor sie das nächste Mal nachschaut. Wenn man sehr kurzfristig (ca. Echtzeit) auf neue Daten reagieren muss, muss diese Schlafpause kurz sein und der entsprechende Thread nimmt sich gehörig Rechenzeit, weil er ständig in Habacht-Stellung ist.

Dazu ist kein Multithreading notwendig. Das geht sowohl seriell (also mit nur einem Kontrollfluss), als auch mit mehreren Prozessen.

Original geschrieben von DarkAvenger
Naja, ich würde es eher so formulieren: Threads zu benutzen macht die Sache einfacher.

Das glaube ich auch nicht. Seriell ist sowas immer noch am einfachsten zu lösen, und auch mehrere Prozess sind mit IPC leichter zu handhaben, als mehrere Threads.

DarkAvenger
16.05.2004, 14:07
@Puck


Das glaube ich auch nicht. Seriell ist sowas immer noch am einfachsten zu lösen, und auch mehrere Prozess sind mit IPC leichter zu handhaben, als mehrere Threads.


Ich weiß zwar nicht, was IPC ist, aber bezogen auf sequentiell kann ich deiner Argumentattion nicht folgen. Ich finde bei einem gethreadeten Ansatz ein (etwa in Windooze) WaitForSingeObject(bla,INFINITE); wesentlich einfacher als im sequentiellen Fall, ständig nachzufragen wie weit denn nun der simulierte 2. thread ist. Wenn man nun mehrere threads simulieren möchte und das Verhalten nicht-deterministisch ist, endet man letztendlich dabei einen scheduler zu schreiben, und das denke ich sollte man doch lieber dem OS überlassen...

PuckPoltergeist
16.05.2004, 14:20
Original geschrieben von DarkAvenger
Wenn man nun mehrere threads simulieren möchte und das Verhalten nicht-deterministisch ist, endet man letztendlich dabei einen scheduler zu schreiben, und das denke ich sollte man doch lieber dem OS überlassen...

Musst du doch nicht. Setzt einfach eine Timer, und lass über diesen eine spezielle Funktion aufrufen. Das sollte auch mit Windows gehen. Du musst nur aufpassen, dass der Timer nicht zu kurz gesetzt wird, sonst muss das wieder synchronisiert werden, was aber mit einer einfache if-Anweisung und einer zusätzlichen Variablen erledigt ist. Ist immer noch einfacher, als mehrere threads gegenseitig zu synchronisieren.

PS: IPC - InterProcess Communication

DarkAvenger
16.05.2004, 14:34
Hmm, timer ist so eine Sache. Ich finde mehrere threads zu syncen rel einfach, wenn man events benutzt. Aber ist wahrscheinlich eine persöhnliche Vorliebe, was man lieber hat. Mir erscheint das mit dem timer komlizierter, aber gut, jedem das seine. :)

PuckPoltergeist
16.05.2004, 15:35
Das kann sehr schnell sehr aufwändig werden, wenn du anfangen musst, Variablen oder ganze Programmbereiche via Mutex zu locken.

Woerns
17.05.2004, 12:51
@DarkAvenger, Arrays
Zum einen gibts solche Array int n[20], wo du selber dafür zuständig bist,
dass du nicht auf n[35] oder so zugreifst. Zum anderen gibts z.B. in den Microsoft Foundation Classes eine Klasse CArray und davon abgeleitete Klassen wie CIntArray. In einem solchen Array kannst du dynamisch Einträge einsetzen/anhängen und mit GetSize() den Array fragen, wie groß er gerade ist. Solltest du trotzdem mal "daneben" greifen, kriegst du eine Assertion.

@Threads
Welche Technik man verwendet, kann man sich in einem eigenständigen Projekt für eine Diplomarbeit oder so aussuchen. Aber in einem Projekt, wo man mit anderen zusammen arbeitet und vielleicht sogar noch Altlasten von vor 5 Jahren mitschleifen muss, sind die Technologien oft vorgegeben und man kann den sinnvollsten Weg leider nicht gehen. MfG

DarkAvenger
17.05.2004, 13:11
@Woerns

Habe das richtig verstanden, daß das CArray dann im Prinzip wie eine Art verkette Liste geführt wird? Das stelle ich mir alles andere als perfomant vor...

Woerns
17.05.2004, 13:19
@DarkAvenger
Wie genau Microsoft das implementiert hat, weiß ich nicht, aber eine verkettete List, in der man sich von Eintrag zu Eintrag durchhangeln muss, ist es sicher nicht. Der Array ist schon auf Performance getrimmt und für "einfache" Mathematik ausreichend. Du kannst ihn auch beschleunigen, indem du ihm sagst, für wieviele Einträge er Speicher reservieren soll, wenn er jeweils seine Grenze überschreitet. Im dümmsten Fall würde er jedesmal, wenn ein neuer Eintrag hinzukommt, neuen Speicher reservieren und wäre natürlich ziemlich lahm. MfG

i_hasser
17.05.2004, 16:00
Ich denke der wird das immer in kleinen Blöcken organisieren, je nachdem wie die Anfragen kommen. Also sowas hier:

struct array
{
struct array *next;
(struct array *last*;)
int entries_here;
[...] entries[];
}

Wenn man da eben immer 100 Elemente gleichzeitig allokiert bekommt man auch halbwegs performance, ein anderer Weg wäre realloc (was allerdings auch bei statischen Arrays funktioniert). Dank Paging ist ein realloc nicht mehr so das Problem.

Ray
30.05.2004, 02:03
Original geschrieben von Woerns
Ich mache Multithreading nicht, um Performance zu gewinnen, sondern weil es programmiertechnisch erforderlich ist, dass verschiedene Threads gleichzeitig laufen. Ein typisches Beispiel ist, dass neben einem Hauptprogramm der serielle Port abgehört werden muss, der seine Daten asynchron empfängt. Insofern ist das nicht witzlos sondern notwendig. Die seriellen Daten landen dann z.B. in einem FIFO und ein anderer Thread schaut ständig nach, ob was neues vom Port im FIFO angekommen ist. Das ist typischerweise eine Schleife, die eine kurze Schlafpause einlegt, bevor sie das nächste Mal nachschaut. Wenn man sehr kurzfristig (ca. Echtzeit) auf neue Daten reagieren muss, muss diese Schlafpause kurz sein und der entsprechende Thread nimmt sich gehörig Rechenzeit, weil er ständig in Habacht-Stellung ist.

Zyklisches Pollen im Wechsel mit Idle-Intervallen, um etwas kostbare CPU-Zeit abzugeben? Eine recht unbefriedigende Lösung, welche zur Not höchstens zum Einsatz kommen sollte, wenn ein Hardware-Port keinen Interrupt auslösen kann. Ein Aspekt des Multithreading ist es doch gerade, auf so etwas verzichten zu können! Dazu gibt es Events für die Signalisierung und Critical Sections für den ungestörten Datenzugriff.

Aber hier im Thread geht es ja um die Lieblingsprogrammiersprache:
Vor C/C++ hatte ich im Studium Pascal und als Werkstudent Modula II genutzt bzw. nutzen müssen.
Mit Modula II (Pascal-Syntax) kann man im Code alles anstellen, was auch in C möglich ist. Die Sprache bietet aber darüber hinaus ein Parallelisierungskonzept, die Co-Routinen, im Ansatz eine Art Multithreading.
Weitaus besser hat mir aber das Konzept der Modularisierung von Modula II gefallen, denn im Gegensatz zu C sind die Schnittstellen, Export und Import eindeutig geregelt.
Die Sprache eignet sich bestens für das Software Engineering. Zu DOS-Zeiten gabe es von Jensen&Partners, ein Abkömmling von Borland, die schnelle TopSpeed Compiler Suite, mit welcher man gemischtsprachlich in C, Pascal und Modula II entwickeln konnte.
C lernte ich mit dem Buch "Von Modula nach C und zurück", danach bin ich bei C/C++ beruflich bedingt geblieben.

Irgendwie hatte sich Modula II nicht flächendeckend durchgesetzt, C war und ist einfach auf allen denkbaren Plattformen verfügbar.
Es gab noch Modula III mit objektorientierten Ansatz, ein OO-Nachfolger ist Oberon (http://www.oberon.ethz.ch/).

Ciao,
Ray

Beffo38
03.08.2004, 01:19
Angefangen hat alles mit Mallard Basic auf einem Schneider PCW8256 "Joyce" mit Z80-8Bit-Prozessor, zusammen mit LOGO (mit der Schildkröte ;)).

Dann kamen als Klassiker auf dem PC QBasic und Turbo Pascal. Und in RGH Profan habe ich meine ersten Schritte in der Windows-Programmierung gemacht. Dazu kam ein wenig Visual Basic.

Im Informatik-Studium lernte ich dann funktionale Programmierung in SML und Haskell. Ideal zum umsetzen mathematischer Formeln und Algorithmen. Dann kam natürlich noch C hinzu und...

Java!!! Keine wilden Pointer, sondern klare Referenzen auf Objekte, und die Speicherverwaltung übernimmt die VM. Da kann man sich wirklich aufs programmieren konzentrieren, und dank des logischen und strukturierten objekt-orientierten Aufbaus des Sprache kann man auch wirklich "modellieren". Das ist die hohe Kunst des Software Development ;).

Und fürs Internet ist PHP unschlagbar. Kurz, knackig und einfach für kleine bis mittlere Aufgaben (wobei ich von OO in PHP nicht so viel halte - PHP ist in meinen Augen eine reine Skriptsprache mit sehr kurzen Laufzeiten, wozu also noch zig Objekte anlegen?)

McTristan
05.08.2004, 13:49
Hmm ... um auf die eigentliche Frage zu antworten:

Ich mag persönlich ASP.NET (gerade in der neuen Version 2005 ;) ) und C# sehr gern.
Kann aber auch Assembler, VB, C/C++, PHP und Java. An PHP gefällt mir, dass man dort so furchtbar schluderig programmieren kann und es in den meisten Fällen dennoch funktioniert. Auch Dinge wie $$bla sind cool :)

C_G_I
22.08.2004, 10:48
ick steh auf qick n´ dirty
und mag Perl und C

@Beffo38 in Baden-Würtemberg studiert? kenne niemanden der sonst Haskell lernte *hehe*
und PHP ist nu wirklich NICHT unschlagbar, eher 2te/3te Wahl.

jo



Copyright © 1999 - 2011 Planet 3DNow!
Rechtliche Hinweise