# PHP? Bitte nicht!



## Christian Fein (21. Juni 2006)

Wird Zeit mal wieder eine *hoffentlich* grössere Diskussion in die Wege zu leiten.

Thema PHP und wie eine Sprache trotz massiver Fehler so häufig genutzt wird.

Auf die Gefahr hin das ich mich bei einigen unbeliebt mache, aber PHP ist hässlich inkonsistent, verleitet zu schlechter Programmierung und ist den Konkurrenzsprachen technisch sowie konzeptionell komplett unterlegen.

Da ich nicht einfach so ein Schmähsatz im Raum stehen lassen will, werd ich das mit Beispielen untermauern:

a) PHP ist hässlich:
Darauf gehe ich im Bezug von Inkonsistenz ein.

b) PHP ist inkonsitent:
case sensitiv     - case insenstiv
ereg_replace     -  eregi_replace
str_replace       -   str_ireplace 
strpos              - stripos
strcmp              - strcasecmp

Allein für die Unterscheidung zwischen Case Sensitiv und Case Insensitiv haben wir 4!! verschiedene Bennenungsvarianten.
str_ireplace <- i anfang 2. wortes
eregi_replace <- ende des 1. wortes
stripos <- irgendwoe dazwischen ein i
strcasecmp <- ein case in den funktionsnamen gemauschelt.

2 Funktionen:
strip_tags
stripcslashes

Wieso einmal mit underscore und einmal ohne? wieso nicht strip_tags und strip_clashes?
oder striptags und stripcslashes? Das zieht sich durch die komplette PHP Funktionsbenennung. 

bin2hex  oder strtolower. Wieso nicht bintohex u. strtolower bzw bin2hex u. str2lower. 

Es resultiert daraus das mann in keiner anderen Sprache die ich kennen gelernt habe, trotz erfahrung so oft in der Referenz nachschlagen muss. Auch dann wenn mann den Namen der Funktion und der Parameter noch im Kopf hat (vor langer Zeit mal genutzt). Alleinig aufgrund der inkonsistenz in der Benennung.

Aufgrund eines fehlenden Konzeptes der Sprache in der Benennung und dadurch das PHP die hässliche Art der Variablen deklaration $var von Perl erbt macht PHP Code zu einem sehr hässlichen Konstrukt. Hässlichkeit von Code hat jedoch auch technische Relevanz  da es kryptisch und schwer lesbar wird.
PHP bietet die hässlichkeit von Perl ohne dessen Mächtigkeit zu erben.

c) verleitet zu schlechter Programmierung. Globale Variablen und ein halbherzige OOP unterstützung. Beispielsweise Ausnahmebehandlung. Die Ausnahmebehandlung sieht genauso aus wie bei Java
try {
  // mach was böses 
} catch(Exception $e) {
   echo $e->getMessage(), "\n";
}
Schön! Aber anscheinend haben die PHP Entwickler kein Interresse daran das selber zu nutzen. Denn wieso wirf file() keine Exception wenn die Datei nicht gefunden wird?
Ein PHP Programmierer muss sich selber darum kümmern zu prüfen ob gefunden wird oder nicht, und eine Exception bei Bedarf werfen
Im übrigen wird die OOP Fähigkeit die bei PHP5 nicht mehr ganz so schlimm ist von den PHP Entwicklern komplett ausser acht gelassen. Die Standard lib von PHP umfasst 3000 Funktionen komplett im globalen Namensraum ohne auch nur den Hauch von OOP.

d) Technische Unzulänglichkeiten
Scriptsprachen haben den Vorteil einiges bieten zu können welches mit anderen Sprachen weniger leicht umzusetzen ist. Da währen Closures, Iteratoren, Generatoren, lambda Funktionen (nur eine fehleranfällige create_funktion String Kombination) und und und. PHP bietet vom Sprachumfang nicht mal annähernd die Dynamik die Python, Ruby Perl bieten. 

e) Konzeptionelle Unzulänglichkeiten
Globaler Namensraum für alle Funktionen. Keine OOP Unterstützung in der Standardlib.
Keine Ausnahmebehandlung in der Standardlib. Inkonsistenten in der Funktionsbenennung. Keine ordentliche Datenbank Schnittstelle sondern für jede Datenbank komplett verschiedene Funktionen.

ociexecute - Oracle 8
db2_execute - DB2
pg_execute - postgresql
mysql_query -mysql
Nur db2 und postgreSQL ähneln sich bei der Ausführung von Prepared Statements. Da gibts aber dann db2_tables, wo es kein pg_tables gibt. usw und sofort. Ich könnte hier ganze Seiten füllen mit Unterschieden bei den Zugriffen auf nur jene Datenbanken.
Es gibt zwar Bestrebungen das langsam aber sicher anzugleichen, aber der momentane Status ist schlimm. Resultat ist, ein PHP Projekt mal eben von MySQL auf Oracle zu migrieren ist ein extremer aufwand.


----------



## Sinac (21. Juni 2006)

"Thema PHP und wie eine Sprache trotz massiver Fehler so häufig genutzt wird."

Das errinnert mich an was:
Thema Windows und wie ein OS trotz massiver Fehler so häufig genutzt wird." 

Ich persönlich Programmiere leider viel zu wenig um mit diesen Fehlern wirklich Probleme zu haben, würde mich aber auf jeden Fall interessieren was unsere Coding- und PHP-Experten dazu zu sagen haben.

Greetz...
Sinac


----------



## Dennis Wronka (21. Juni 2006)

Ich programmier ja bekanntlich ganz gern mit PHP. Aber zum Teil find ich diese Inkonsistenzen auch recht nervig.
Was auch sehr verwirrend ist ist wenn man ploetzlich eine Fehlermeldung auf hebraeisch oder ostsumerisch oder was weiss ich vor Augen hat. Hatte da irgendwann mal sowas, gibt's auch einen Thread zu. 

Die Attraktivitaet von PHP liegt sicher darin, dass es grundsaetzlich erstmal recht einfach zu lernen ist. Ich muss jedoch auch zustimmen, dass PHP zu unsauberer und auch zu unsicherer Programmierung verleitet wenn man sich nicht sowieso fuer das Thema Sicherheit interessiert oder gar in einer lustigen, rosa Bluemchenwelt lebt wo es keine boesen Menschen gibt.


----------



## tobee (21. Juni 2006)

> ...verleitet zu schlechter Programmierung und ...



Das stimme ich dir zu. Ist gibt sehr viele "Freiheiten" in php.
Zum Beispiel ist <?, <?php, <% und <script language="php"> erlaubt.

Tobee


----------



## Christian Fein (21. Juni 2006)

Dennis Wronka hat gesagt.:
			
		

> Die Attraktivitaet von PHP liegt sicher darin, dass es grundsaetzlich erstmal recht einfach zu lernen ist.



Aber das stimmt doch gar nicht.

PHP ist nicht einfacher als andere Sprachen. Gerade für Anfänger. Vergleiche mit Python


```
for($i = 0; $i < 10; $i++) {
   echo $i;
}

$str = " dies ";
while($a < 20) {
    $k = doSomeThing();
   if($k) {
       $str .= "ein String mit $k";
   } 
   $a++;
}
```


```
for i in range(10):
    echo i

str = " dies "
while a < 20:
     k = doSomeThing()
     if k: 
        str+= " ein String mit %s " % k
     a+=1
```

Nur mal so ein paar Code Konstrukte. Ich sehe nicht wo PHP einfacher ist. Im Gegenteil ist PHP kryptischer (um einiges kryptischer) und verlangt Vorwissen wie das:
1 == True ist und 0 == False. Das Addition von Zahlen 
$a += 3 aber "addition" von Strings  $str .= "blub" erledigt wird.
Ruby ist ähnlich leicht lesbarer als PHP. Mann kann diese Sprachen genauso einfach erlernen.
Mit dem grossen Unterschied, bei Python bleibt die Lernkurve ähnlich flach/steil wie zu beginn. Bei PHP aber stösst mann umso weiter mann kommt auf jene unzulänglichkeiten und die Lernkurve steigt massiv an.


----------



## SilentWarrior (21. Juni 2006)

Anstatt hier rumzujammern (hey, nicht so gemeint ), bringt doch lieber vernünftige Alternativen. Fakt ist nunmal, dass immer noch die meisten Server PHP und MySQL als Standard mitbringen. Ich würd ja auch auf Ruby umsteigen, wenn ich einen Provider fände, der es unterstützt. Genau das Gleiche wie bei den Betriebssystemen: Wenn nicht jedes Spiel ausschliesslich (ok, mittlerweile nicht mehr ganz so schlimm) für Windows produziert würde, würden die Leute (vor allem die jungen ) vielleicht auch mal langsam anfangen, sich für die Alternativen zu interessieren/begeistern.

Ausserdem könnte man, zumindest was die zugegebenermassen sehr inkonsistente Funktionsbezeichnung angeht, ja ein kleines File machen, das die Funktionsnamen quasi konsistenzifiziert (äh? ) und das dann jeweils zu Beginn über include oder require (hallo, Rekursion! ) einbinden.


----------



## Norbert Eder (21. Juni 2006)

Oh ja wow. Gleich einen Thread in dem ordentliche Entwickler gegen PHP-Hobby-Gärtner diskutieren UND dazu auch noch ein Windows vs Linux Flamewar. Strike. Eventuell sollten wir noch eine kleine Prise .NET vs Java drüberstreuen. Dann hätten wir's.

Ungeachtet dessen, bleiben wir beim Thema:
Ich muss hier Chris zustimmen. Dennoch habe ich eine kleine Entschuldigung für PHP: Dieses Etwas ist durch die Jahre einfach gewachsen und daher gibt's auch ein wenig Unklarheiten bezüglich der Namensgebung und anderen Dingen. Und um vorzubeugen: Dies ist ironisch gemeint.

Eine andere Frage: 
Wie lange sucht ihr PHP-Schreiber eigentlich einen Fehler bis ihr ihn gefunden habt? Die Debug-Funktionalität (darf man das überhaupt so nennen) ist das absolut schlimmste, wenn man diverse IDEs von wirklichen Sprachen gewohnt ist (Visual Studio, Eclipse, etc.). Moment, da gibt's ja Zend. Wieviele haben das eigentlich im Einsatz? 

Naja, weitere Punkte werd ich vielleicht später einwerfen 

Ad SilentWarrior:
Ähm, bitte? Vielleicht dann noch ein Mapping-File für das Mapping-File damit PHP endlich ein wenig sauberer wird? Ich denke, das Problem liegt da ganz wo anders. Programmiersprachen, oder so Skripties sollten von Beginn an sauber sein.

Alternativen gibt es genug und wurden teilweise auch von Chris genannt. Provider: Findet man. Auch kein Thema.


----------



## Dennis Wronka (21. Juni 2006)

Norbert Eder hat gesagt.:
			
		

> Wie lange sucht ihr PHP-Schreiber eigentlich einen Fehler bis ihr ihn gefunden habt?


Ein paar seltene Fehler sind schon fies zu finden, aber ansonsten geht das, dank vollem Error-Reporting recht fix. Vor allem wenn man nicht gleich 200 Zeilen Code in den Edior taettowiert und erst dann testet laesst sich so ein Fehler ja recht gut eingrenzen.

Wie gesagt, die Diskussion Amiga 500 vs. C64 fehlt auch noch...


----------



## Christian Fein (21. Juni 2006)

und spätestens dann wenn man etwas weiterkommt bietet PHP einem kaum etwas. 


```
>>> def month():
... 	arr= [["Januar","Februar"],0]
... 	def step():
... 		arr[1]+=1
... 	def out():
... 		print arr[0][arr[1]]
... 	return step, out
... 
>>> month_step, month_out = month()
>>> month_out()
Januar
>>> month_step()
>>> month_out()
Februar
>>>
```

Closures wie diese sind in PHP gar nicht möglich. Es ist zu erwarten das Stark typisierende Sprachen wie Java,  C usw damit nicht klar kommen. Aber PHP? 
Wieso bietet PHP mir das nicht? Ruby, Groovy, Python, Perl, Lisp usw bieten mir das.
Mann hat mit PHP also eine Scriptsprache die ähnlich dynamisch ist wie eine stark typisierende Sprache.


----------



## Christian Fein (21. Juni 2006)

SilentWarrior hat gesagt.:
			
		

> Anstatt hier rumzujammern (hey, nicht so gemeint ), bringt doch lieber vernünftige Alternativen. Fakt ist nunmal, dass immer noch die meisten Server PHP und MySQL als Standard mitbringen. Ich würd ja auch auf Ruby umsteigen, wenn ich einen Provider fände, der es unterstützt.



domainfactory mod_python 9.90 € im Monat. 
Zudem richten sich die Hosting Anbieter nach dem was von den Kunden gewünscht wird. Natürlich nicht was EIN einziger Kunde wünscht.
mod_python bietet einem genau das selbe Entwicklungsmodell wie mod_php nur mit dem unterschied das mann eine leistungsfähige Sprache hat.



> Ausserdem könnte man, zumindest was die zugegebenermassen sehr inkonsistente Funktionsbezeichnung angeht, ja ein kleines File machen, das die Funktionsnamen quasi konsistenzifiziert (äh? ) und das dann jeweils zu Beginn über include oder require (hallo, Rekursion! ) einbinden.


Bähh anderer Vorschlag, haut den PHP Entwicklern solange auf den Deckel bis die das endlich mal gebacken bringen. Oder wechselt gleich zu einer der alternativen.


----------



## Admi (21. Juni 2006)

Vorteile von PHP aus Sicht eines Hobbyschreiberlings:

1.) Riesige Community - dadurch viele Ansprechpartner...seht euch nur mal die Forenstatistik an, wo PHP mehr als deutlich am Rest der Programming-Ecke vorbeizieht.

2.) Dadurch bedingt viele Tutoriale, Hilfeseiten wie eben auch diese hier

3.) kostenfrei

4.) Im Gegensatz zu C oder Java leichter verständlicher -> höherer Erfolgsfaktor -> Leute bleiben bei der Stange, beschäftigen sich damit, werden besser.

5.) Die Grundlagensprachen (HTML, CSS) zur Strukturierung und Layoutierung von mit PHP erstellen Seiten sind sehr leicht zu erlernen.
Wenn ich mir da das umständliche Gewese bei Java (AWT, Swing) oder C anschaue, vergeht es dem Hobbyschreiberling.

6.) Ganz gute Unterstützung dank diverser administrativer Entwicklungsprogramme

6.) Nicht jeder studiert jahrelang Informatik, möchte aber trotzdem gerne selbst etwas entwickeln und da bietet sich PHP dank seiner großen Verbreitung auf dem Servermarkt sehr gut an.

Die Namensinkonstitenz diverser Funktionen stört mich bisweilen auch etwas. Da hilft dann meist nur noch php.net.


----------



## Christian Fein (21. Juni 2006)

noch ein Beispiel von Tom, der mein Closure nicht niedlich genug findet 


```
months=['Januar','Februar','Maerz']
def month():
   idx=0
   while True:
     yield months[idx]
     idx =(idx+1) % 12
```


----------



## Christian Fein (21. Juni 2006)

Admi hat gesagt.:
			
		

> Vorteile von PHP aus Sicht eines Hobbyschreiberlings:
> 1.) Riesige Community - dadurch viele Ansprechpartner...seht euch nur mal die Forenstatistik an, wo PHP mehr als deutlich am Rest der Programming-Ecke vorbeizieht.



Ja bei uns. Aber wenn hier mehrere Interresse haben und das gepuscht wird dann ändert das sich auch auf tutorials.de.
Ich kann mich noch errinnern als ich das Java Forum aufgemacht habe auf tutorials.de. Wir sind gestartet mit 1 neuem Thread alle 2 Tage . 
Aber nach und nach sind Leute wie Tom dazu gekommen so das das Java Forum ordentlich zugelegt hat und das C++ Forum bald überholt. 
 PHP  (24 Betrachter)  
 Java  (29 Betrachter)  
PHP Forum wird zwar nicht eingeholt, aber 



> 2.) Dadurch bedingt viele Tutoriale, Hilfeseiten wie eben auch diese hier



Das mag gut sein. Aber das ist immer noch nicht eine gute Eigenschaft der Sprache.  



> 3.) kostenfrei



Das gilt für Java, Python, Ruby, Lisp, C, C++, Brainfuck  usw auch



> 4.) Im Gegensatz zu C oder Java leichter verständlicher -> höherer Erfolgsfaktor -> Leute bleiben bei der Stange, beschäftigen sich damit, werden besser.



Nun gegenüber Ruby und Python (um nur 2 zu nennen) ist die Verständlichkeit aber nicht höher. Eigentlich niedriger. 



> 5.) Die Grundlagensprachen (HTML, CSS) zur Strukturierung und Layoutierung von mit PHP erstellen Seiten sind sehr leicht zu erlernen.




```
Hallo <%= user.username %><br />
bla blub blem<br>
<% if user.loggedin: %>
Du bist eingeloggt
<% #end %>

<table>
<%
for m in month:
%>
<tr>
     <td><%= m %></td>
</tr>
<% #end %>
</table>
```

sieht doch PHP sehr ähnlich oder? 



> Wenn ich mir da das umständliche Gewese bei Java (AWT, Swing) oder C anschaue, vergeht es dem Hobbyschreiberling.


AWT/Swing ist kein HTML 

Mann kann auch Java in JSP Pages mit HTML mischen 


```
Hallo <%= user.getUsername() %> <br >
bla  blub blem
<% if(user.isLoggedIn()) { %>
Du bist eingeloggt 
<% } %>
<table>
<% for(String month: monthStrings) { %>
<tr>
   <td><%= month %></td>
</tr>
</table>
<% } %>
```

ja sowas ist auch mit Java möglich. Genauso ist das mit C# möglich. Nur macht mann das in diesen beiden Sprachen nicht da man hier genügend Möglichkeiten bekommt den Code komplett aus dem HTML rauszuhalten.



> 6.) Ganz gute Unterstützung dank diverser administrativer Entwicklungsprogramme



Die Toolunterstützung ist bei PHP nicht gerade berauschend. Wie Norbert schon angesprochen hat. 



> 6.) Nicht jeder studiert jahrelang Informatik, möchte aber trotzdem gerne selbst etwas entwickeln und da bietet sich PHP dank seiner großen Verbreitung auf dem Servermarkt sehr gut an.



nun die Hoster spielen das auf was verlangt wird. Es stimmt zwar das man für die Alternativen etwas suchen muss, aber nur solange es nicht genügend angefragt wird. 



> Die Namensinkonstitenz diverser Funktionen stört mich bisweilen auch etwas. Da hilft dann meist nur noch php.net.



jap


----------



## Mamphil (21. Juni 2006)

Jetzt kommt noch ein wenig Mathe dazu:
Ich gehe jetzt nur auf ein Statement ein:





			
				Christian Fein hat gesagt.:
			
		

> Das Addition von Zahlen
> $a += 3 aber "addition" von Strings $str .= "blub" erledigt wird.


Wie bitteschön ist die Addition von Strings definiert? Es ist jedenfalls korrekt, dass man Strings nicht addieren, sondern verketten kann. Ein nettes (teilweise unverzichtbares) Feature, was die Unterscheidung von Addition und Zusammenfügen von Zeichenketten nötig macht, ist die automatische Typenumwandlung. Wenn ich aus einem Webformular eine Zahl zurückbekomme, überprüfe ich, ob das eine Zahl ist und kann sie weiterbearbeiten. Soll ich erst eine Typumwandlung machen und darum eine Exception bauen?

Viel "hässlicher" ist, dass die Zuweisung von Variablen mit einem Gleichheitszeichen geschieht:
	
	
	



```
$a = 1234
```
Ein Mathematiker liest hier "Die Variable a entspricht 1234", eine richtige Zuweisung, also Definition, funktionier mit := 
	
	
	



```
a := 1234
```

Mamphil


----------



## Dennis Wronka (21. Juni 2006)

Mamphil hat gesagt.:
			
		

> Viel "hässlicher" ist, dass die Zuweisung von Variablen mit einem Gleichheitszeichen geschieht:
> 
> 
> 
> ...


Die Zuweisung mit := kenne ich selbst nur aus Pascal (und eben auch Delphi), alles andere was ich so kenne (z.B. eben C und PHP) weisen mit einem normalen = zu.

Du kannst dies also wenn dann nicht als Schwachpunkt von PHP ansprechen, sondern hoechstens als Schwachpunkt mehrerer (oder gar vieler) Sprachen.


----------



## Christian Fein (21. Juni 2006)

Mamphil hat gesagt.:
			
		

> Jetzt kommt noch ein wenig Mathe dazu:
> Ich gehe jetzt nur auf ein Statement ein:Wie bitteschön ist die Addition von Strings definiert?



Deshalb habe ich "addition"  in Anführungszeichen geschrieben. Ich gehe einfach mal davon aus das du weisst was man damit ausdrückt wenn man etwas in Anführungszeichen setzt. Diese Ausdrucksweise habe ich gezielt gewählt um auch nicht jene die noch so tief in der Materie stecken verstehen was ich meine.



> Es ist jedenfalls korrekt, dass man Strings nicht addieren, sondern verketten kann. Ein nettes (teilweise unverzichtbares) Feature, was die Unterscheidung von Addition und Zusammenfügen von Zeichenketten nötig macht, ist die automatische Typenumwandlung.



nun das ist bei python ebenso gegeben nur etwas netter. 
str = " hier ist eine Zahl: %s als String." % 2

Wo ist der Vorteil PHP?



> Wenn ich aus einem Webformular eine Zahl zurückbekomme, überprüfe ich, ob das eine Zahl ist und kann sie weiterbearbeiten. Soll ich erst eine Typumwandlung machen und darum eine Exception bauen?



Wer sagt das?



> Viel "hässlicher" ist, dass die Zuweisung von Variablen mit einem Gleichheitszeichen geschieht:
> 
> 
> 
> ...



Pascal macht die Zuweisung mathematisch korrekt. Aber Wertzuweisungen sind das meist genutzte Konstrukt in der Programmierung. Weshalb hier eine Verkürzung auf = sinn macht.


----------



## Mamphil (21. Juni 2006)

Dennis Wronka hat gesagt.:
			
		

> Die Zuweisung mit := kenne ich selbst nur aus Pascal (und eben auch Delphi), alles andere was ich so kenne (z.B. eben C und PHP) weisen mit einem normalen = zu.
> 
> Du kannst dies also wenn dann nicht als Schwachpunkt von PHP ansprechen, sondern hoechstens als Schwachpunkt mehrerer (oder gar vieler) Sprachen.


Ich weiß 

Die Variablen-Zuweisung mit dem einfachen Gleichheitszeichen ist Schwachpunkt vieler Sprachen.
PHP ist Teilmenge "vieler Sprachen".
Dann ist die Variablen-Zuweisung mit dem einfachen Gleichheitszeichen auch Schwachpunkt von PHP 

Nur weil die große Masse etwas verwendet, heißt das ja nicht, dass es gut und richtig ist. Ansonsten könnten wir uns die Diskussion über den Sinn und Unsinn von PHP gleich schenken: Die Sprache wird von vielen verwendet, muss also gut und richtig sein 

Mamphil


----------



## Christian Fein (21. Juni 2006)

Mamphil hat gesagt.:
			
		

> Die Variablen-Zuweisung mit dem einfachen Gleichheitszeichen ist Schwachpunkt vieler Sprachen.
> PHP ist Teilmenge "vieler Sprachen".
> Dann ist die Variablen-Zuweisung mit dem einfachen Gleichheitszeichen auch Schwachpunkt von PHP



Ich empfinde das nicht als Schwachpunkt. Den Grund habe ich dargelegt. 

eventuell ganz interressant im zusammenhang:


> v = a          C, C++, C#, Fortran, Java
> v := a         ALGOL, Modula-2, Oberon, Pascal
> v ? a          Smalltalk
> set v a        Tcl
> ...


----------



## Dennis Wronka (21. Juni 2006)

Christian Fein hat gesagt.:
			
		

> ```
> v = a C, C++, C#, Fortran, Java
> v := a ALGOL, Modula-2, Oberon, Pascal
> v ? a Smalltalk
> ...




```
mov ax,bx ASSEMBLER
```


----------



## Christian Fein (21. Juni 2006)

Dennis Wronka hat gesagt.:
			
		

> ```
> mov ax,bx ASSEMBLER
> ```



>+++++++[<++++++++++++>-]<+++.>+++[<++++++>-]<.+++..-.++++.--..-
.+++++++++.>++++++[<------------->-]<.>++++++++[<++++++++
+>-]<+.+++++.>++++++[<------------->-]<.>++++++[<+++++++++++>-]<
++.+.+++++++++++++.>+++++++++[<--------->-]<-.>+++++++[<++++++++
++++>-]<+++.--.-------.----------.+.+++++++++++++.>++++[<---->-]
<.-.>++++[<++++>-]<+.-------------.+++++++++.>++++++[<----------
--->-]<.>+++++[<+++++++++++>-]<.++++++++++++++.+++++++.++++++++.
>+++++++[<------------>-]<.>++++++[<+++++++++++>-]<++.+.++++++++
+++++.>+++++++++[<--------->-]<-.>++++++[<++++++++>-]<.>++++[<++
++++++>-]<++.---.--------.+++++++++++.>++++[<---->-]<-.+++++++++
+++..----.----.+++++++++++++.+.---.++.>++++[<---->-]<-.++.+++++.
---.>++++++[<----------->-]<---.>++++[<++++++++>-]<++.>++++++[<+
+++++++>-]<.>++++[<---->-]<-.++++++++.+++++.--------.+++++++++++
++++.>+++[<------>-]<.++++++++.>++++++++[<------------>-]<-.


----------



## Norbert Eder (21. Juni 2006)

Mamphil hat gesagt.:
			
		

> Die Sprache wird von vielen verwendet, muss also gut und richtig sein
> 
> Mamphil


Also wenn ich mir den Sourcecode von vielen PHP-Lösungen ansehe, dann wird mir schlecht. Nicht nur das Chaos innerhalb der Sprache, sondern auch, wie diverse "Entwickler" mit dem Werkzeug PHP umgehen. Gut, das kann mit anderen (richtigen) Programmiersprachen teilweise auch schrecklich umgesetzt werden, jedoch ist PHP sicherlich die Sprache, wo ein Großteil der schlechten Programmierer zu Hause ist. Und das wird wohl seinen Grund haben ....


----------



## Neok (21. Juni 2006)

Norbert Eder hat gesagt.:
			
		

> ... jedoch ist PHP sicherlich die Sprache, wo ein Großteil der schlechten Programmierer zu Hause ist. Und das wird wohl seinen Grund haben ....



Ich würde das eben wieder auf die einfache Erlernung von PHP zurückführen.


----------



## Matthias Reitinger (21. Juni 2006)

Hallo,



			
				Norbert Eder hat gesagt.:
			
		

> […]jedoch ist PHP sicherlich die Sprache, wo ein Großteil der schlechten Programmierer zu Hause ist. Und das wird wohl seinen Grund haben ....


Wobei die Bezeichnung „Programmierer“ bei den meisten Vertretern da noch ziemlich hoch gegriffen ist ;-] 

@Christian Fein:

```
[Enter Romeo and Juliet]

Romeo:
 You are as good as me!
```
 – SPL 

Grüße,
 Matthias


----------



## Dennis Wronka (21. Juni 2006)

Neok hat gesagt.:
			
		

> Ich würde das eben wieder auf die einfache Erlernung von PHP zurückführen.


Ich wuerde das eher auf die Beliebtheit zurueckfuehren.
PHP ist in aller Munde, man kann dadurch viele coole Sachen auf seiner Website machen die mit HTML nicht gehen, und auch mit JavaScript nicht.
Viele sind aber schlichtweg zu faul sich vernuenftig mit PHP auseinander zu setzen sondern kopieren einfach von irgendwo irgendwelchen Code zusammen und passen, meist mit Hilfe aus Foren wie tutorials.de, hier und da ein wenig was an.
Der schlechte Stil wird natuerlich von PHP noch unterstuetzt, aber ich denke der Hauptgrund dafuer ist schlicht und ergreifend Faulheit. Man will einfach ganz schnell irgendwas cooles mit PHP auf seiner Website haben, wie halt vor einigen Jahren unbedingt jeder irgendwelche lustigen JavaScripts wollte und animierte GIFs.


----------



## Gumbo (21. Juni 2006)

Dennis Wronka hat gesagt.:
			
		

> Viele sind aber schlichtweg zu faul sich vernuenftig mit PHP auseinander zu setzen sondern kopieren einfach von irgendwo irgendwelchen Code zusammen und passen, meist mit Hilfe aus Foren wie tutorials.de, hier und da ein wenig was an.


Genau hier sehe auch ich den Grund. Der Einsteig in PHP ist einfach und schnell. Es gibt fast zu jeder Thematik ein Tutorial, aus dem die Lösung schnell kopiert werden kann. Und dank PHPs Fehlerbehandlung lassen sich die meisten Fehler mit dem @-Operator oder einer kleinen Einstellungsänderung „beheben“. Komplett-Startpakete wie XAMPP unterstützen das noch zusätzlich:





> Wie schon an anderer Stelle erwähnt ist XAMPP nicht für den Produktionseinsatz gedacht, sondern nur für Entwickler in Entwicklungsumgebungen. Das hat zur Folge, dass XAMPP absichtlich nicht restriktiv sondern im Gegenteil sehr offen vorkonfiguriert ist.


Wenn dann mal ein lokal entwickeltes Skript auf dem Server nicht funktioniert, werden einfach Servereinstellungen angepasst.


----------



## Sven Mintel (21. Juni 2006)

Ohne jetzt massig Programmier/Skriptsprachen zu kennen... 

mal abgesehen von den beschriebenen Makeln, bieten die anderen hier genannten Sprachen denn tatsächlich denselbem Umfang wie PHP, und sind sie wirklich für Webanwendungen geeignet?

Und was ist so schlimm daran, dass PHP vermeintlich so einfach zu erlernen ist und deswegen so beliebt?
Je mehr etwas genutzt wird, umsoschneller schreitet auch seine Entwicklung voran....ich sehe das als Vorteil.


----------



## javaprogger1987 (21. Juni 2006)

Dennis Wronka hat gesagt.:
			
		

> Viele sind aber schlichtweg zu faul sich vernuenftig mit PHP auseinander zu setzen sondern kopieren einfach von irgendwo irgendwelchen Code zusammen und passen, meist mit Hilfe aus Foren wie tutorials.de, hier und da ein wenig was an.


Absolute Zustimmung von mir.. 
Ich erinnere mich immer noch mit Grausen an meinen Sowi-Lehrer der mich der öfteren mal mit seinen PHP-Problemen beschäftigt hat..
Das muss man sich so vorstellen - er versucht eine Art Content Management System für irgendwelche Institutionen zu basteln, kann aber kein PHP 
Er hat sich den größten Teil mit Dreamweaver zusammengeklickt und versteht fast gar nichts was da abgeht ;-]
Achja.. einzelne seiner PHP Seiten bringen es schonmal auf 3000 Zeilen Quellcode oder mehr, weil alles - wirklich alles - in der PHP Datei untergebracht ist -inkl. tollem JScript Menü ^^
Das schlägt sich dann in der Ladezeit der Seite drastisch nieder - ca. 5Sek. mit DSL Anschluss 

So viel dazu 

Gruß
Tobias


----------



## Dennis Wronka (21. Juni 2006)

Gumbo hat gesagt.:
			
		

> Wenn dann mal ein lokal entwickeltes Skript auf dem Server nicht funktioniert, werden einfach Servereinstellungen angepasst.


Und deswegen faende ich es sinnvoll wenn wir mal einen Thread im PHP-Forum starten in dem User ihre php.ini posten koennen, darueber diskutiert wird und wir am Ende vielleicht sogar eine moeglichst restriktive Empfehlung erstellen welche sicherstellen sollte, dass Scripts mit allen anderen Einstellungen (mal von deaktivierten Funktionen oder fehlenden Extensions abgesehen) funktionen und die wir dann auch anpinnen.

Ich hatte in Hinblick darauf auch mal ein Script angefangen welches PHP-Scripts nach haeufig aufauchenden Fallen untersucht, wie z.B. die Nutzung unitilialisierter Variablen, was in der Regel auf Programmierung fuer register_globals=on hindeutet.
Das ganze ist zwar bei weitem noch nicht perfekt, aber im Grunde schon keine schlechte Sache. Ich werd mal schauen, dass ich daran weiter arbeite.

@Sven: Chris hatte ja zuerst auch nur Script-Sprachen erwaehnt. Aber es war ja auch abzusehen, dass auch richtige Programmiersprachen Erwaehnung finden. Auch wenn der Vergleich doch etwas hinkt.


----------



## Christian Fein (21. Juni 2006)

Ja das ist mir klar. Aber es gibt auch einige die bei PHP hängen bleiben. Leute die grundsätzlich nicht schlecht programmieren.
Wieso da die Bereitschaft nicht vorhanden ist etwas hinzu zu lernen ist mir einfach unverständlich.

Ich persönlich lerne gerne neue Sprachen. Selbst dann wenn ich sie kaum noch einsetze später (wie eben bsp Perl). Aber jede andere Sprache erweitert einen den Horizont selbst wenn man bei "seiner" Sprache bleibt.

Wenn PHP jetzt eine tolle Sache wäre, dann könnte ich es ja noch verstehen. Aber das ist PHP nicht, und selbst jene die es gerne einsetzen wissen um deren Schwächen.

Gerade ein Blick ins PHP Forum ist teilweise sehr sehr sehr schwer erträglich. Es ist mir klar das ich nicht jene erreiche die "nur was cooles auf die Homepage klatschen" wollen. Mir geht es eigentlich darum das jene die PHP nun recht gut können sich Gedanken machen, ob das wirklich nun die Weisheit letzter Schuss ist.
Oder ob wirklich Interresse besteht die Alternativen kennen zu lernen und sich da weiterzubilden. 
Ich glaube gerade jene die etwas mehr Ahnung vom Programmieren und den Möglichkeiten da draussen haben sollten auch in der Art Verantwortung übernehmen indem sie auch alternativen aufzeigen.
Ganz genauso wie mann dem anderen auch mit der Nase auf Sicherheitsproblematischen Code stupfen sollte.


----------



## Mark (21. Juni 2006)

Hi!

Sicher kein "professionelles Statement", aber aus der Praxis:

Ich verstehe die Bemerkungen ala "PHP ist so leicht zu erlernen" nicht: als Perl-Programmierer (eher mittleren Niveaus) bin ich z.Z. gezwungen (Serverangebot) ein paar Schritte in PHP zu unternehmen und nicht selten staune ich, wie wenig man "Schlussfolgern" kann...
Perl ist da viel "logischer", "aufgeräumter" und somit "selbsterklärender". Und gemeinsam mit de.selfhtml.org/perl ist die Sprache wirklich ein Klacks 
...und das schreibt wer, dem das Programmieren normal nicht leicht fällt 

Resume: ich denke, die "Verbreitung" und das "Angebot" an PHP-Scripten ist ausschlaggebend ... wenn einige wüssten, wie leicht es gehen kann, wäre dem anders 

Liebe Grüße,
Mark.


----------



## Christian Fein (21. Juni 2006)

Sven Mintel hat gesagt.:
			
		

> Ohne jetzt massig Programmier/Skriptsprachen zu kennen...
> 
> mal abgesehen von den beschriebenen Makeln, bieten die anderen hier genannten Sprachen denn tatsächlich denselbem Umfang wie PHP, und sind sie wirklich für Webanwendungen geeignet?



Ja. Oft einen grösseren Umfang da sie sich nicht auf Webanwendungen beschränken.



> Und was ist so schlimm daran, dass PHP vermeintlich so einfach zu erlernen ist und deswegen so beliebt?



Weil PHP nicht einfacher zu erlernen ist als andere Sprachen. Das ist ein Argument das nicht stimmt. 
Argumente wie die breite Softwarebasis auf die mann aufbauen kann, kann mann schon eher zählen. Aber das ist kein Argument für die Sprache sondern nur dafür das sie massiv eingesetzt wird.



> Je mehr etwas genutzt wird, umsoschneller schreitet auch seine Entwicklung voran....ich sehe das als Vorteil.



Das hat bisher bei PHP auch nichts geholfen. Denn diese Probleme die ich angesprochen habe sind seid ewig und drei tag nicht angegangen worden. 
Und die OOP Integration zieht sich nun seid php3 hin ohne auch nur annähernd den Stand von Ruby / Python zu erreichen. 

PHP ist eine Scriptsprache mit allen Nachteilen einer Scriptsprache ohne die Vorteiler jener zu besitzen:

Ich bin eigentlich kein Fan von Geschwindigkeitsvergleichen:
Aber das spricht Bände:
http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=python&lang2=php

http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=ruby&lang2=php

http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=perl&lang2=php

Jetzt ist ein Geschwindigkeitsvergleich zwischen:
PHP - Python
PHP - Perl
PHP - Ruby 
in dem Fall brisant das alle diese 3 Sprachen vom Sprachumfang um ein vielfaches komplexer sind. 
PHP 5.1.4-0.1 (cli) (built: Jun 13 2006 21:46:20)


----------



## Dennis Wronka (21. Juni 2006)

Ich hab frueher viel programmiert, unter anderem in Pascal (TP7.0 und spaeter Delphi 3), hab was C gemacht und sogar Assembler. Mit der Zeit hab ich mich einfach mehr in Sachen Linux und Netzwerke orientiert und weniger auf Programmierung. Was ich jetzt in C mache ist minimal, in der Regel mal irgendeinen Patch fuer irgendwas schreiben, aber das war es in der Regel auch.
Ansonsten beschraenkt sich meine Programmierung eben auf Web-Programmierung, und da ist eben PHP (zumindest zur Zeit) der Weisheit letzter Schluss, auch wenn es keinesfalls frei von Macken ist, wie wir hier ja schon umfassend besprochen haben.
Zuletzt hab ich mich, wegen meiner LFS-Automatisierung, mal mit Bash-Scripts auseinandergesetzt, war auch wirklich interessant, vor allem ist echt schick was man damit so alles machen kann. 
Da ich aber, wie gesagt, einfach nicht mehr so viel mit Programmierung zu tun habe lerne ich Sprachen eigentlich eher bei Bedarf, wie halt zuletzt das Bash-Scripting und jetzt auf der Arbeit auch ASP (*hust*). Wenn ich irgendwann mal wieder Bedarf haben sollte was richtiges zu programmieren werde ich auch wieder mehr mit C/C++ machen, wie ja auch zuletzt als ich mir basierend auf der LibClamAV einen Virenscanner fuer meinen Mail-Server gestrickt habe.
Dementsprechend, ich werd hauptsaechlich bei PHP-Scripting bleiben und dort auch mal ein paar neue Wege beschreiten (wie ich es ja mit meinen diversen Klassen hier schon gemacht hab). Und wenn mal was anliegt kram ich eine der anderen Sprachen wieder aus oder beschaeftige mich auch gern mal mit was Neuem.
Aber fuer mich ist Programmierung einfach nicht mehr das was ich hauptsaechlich am Rechner mache.


----------



## Sven Mintel (21. Juni 2006)

Bloss jetzt mal ehrlich... wenn PHP langsamer ist, weniger Funktionsumfang bietet, schlampig ist und auch sonst nur Nachteile gegenüber anderen Sprache bietet.....warum ist es dann so verbreitet?

Dafür gibts Gründe, und die liegen sicher nicht bei Skriptkiddies oder bestechlichen Hostern.... ich glaube da an eine gesunde natürliche Auslese, und wenn PHP wirklich so K**** wär, dann würde sich niemand dafür interessieren.

Und vor allem...Butter bei de Fische, welches ist dann die wirklich beste Wahl für Webanwendungen?


----------



## Matthias Reitinger (21. Juni 2006)

Hallo,



> Und vor allem...Butter bei de Fische, welches ist dann die wirklich beste Wahl für Webanwendungen?


Natürlich Ruby on Rails! Aber mal im Ernst: das hängt von so vielen Faktoren ab, dass man hier wohl keine Universalantwort liefern kann.

Grüße,
 Matthias


----------



## Christian Fein (21. Juni 2006)

Sven Mintel hat gesagt.:
			
		

> Bloss jetzt mal ehrlich... wenn PHP langsamer ist, weniger Funktionsumfang bietet, schlampig ist und auch sonst nur Nachteile gegenüber anderen Sprache bietet.....warum ist es dann so verbreitet?



Ganz einfach: 
Weil sich Linux verbreitet hat. Weil es als PHP seinen Siegeszug antrat als alternative Perl über CGI gab (Perl ist klar besser aber CGI erforderte jeweils ein neuen Prozess für jedes Script und erlaubt kein Mix von HTML und PHP), und ASP.
JSP - bzw Java ist nicht so leicht wie PHP. ASP lief nur auf Windows Server, aber die massenhoster haben auf günstige Linux Server gesetzt.
Als dann mod_python, mod_ruby besser und besser wurden und dinge wie Ruby on Rails, Django aufkamen da gabs schon massiv PHP Software da draussen und mann hatte sich an Web = PHP gewöhnt.

PHP war zur richtigen Zeit da. Die anderen nicht. Das bedeutet aber nicht das PHP deshalb besser ist.



> Dafür gibts Gründe, und die liegen sicher nicht bei Skriptkiddies oder bestechlichen Hostern.... ich glaube da an eine gesunde natürliche Auslese, und wenn PHP wirklich so K**** wär, dann würde sich niemand dafür interessieren.
> 
> Und vor allem...Butter bei de Fische, welches ist dann die wirklich beste Wahl für Webanwendungen?



Also mit Garantie nicht PHP. 

Es gibt mehrer Technologien die unterschiedliche Vorraussetzung erfüllen. Auch J2EE ist nicht immer die richtige Wahl (auch wenn jeder weiss das ich das verfechte ). 
Aber Ruby on Rails wurde schon angesprochen, Django ist das gleiche in blau (auf Python Basis). ASP.net  und J2EE.
Webanwendungen auf Zope Basis. Ich gebe nur jedem den Tip sich zumindest eine der 3 alternativ genannten Sprachen Python, Ruby, Perl anzuschauen. 
Mann schaue sich einfach mal Code an und jene Sprache die einem am sympatischsten Erscheint kann mann dann meist in einer Woche (PHP Erfahrung vorraussegesetzt) soweit lernen das mann ungefair einschätzen kann wie die Sprache ist.
Selbst wenn mann nach einer Woche merkt, mhhh Python gefällt mir nicht hätte ich mal lieber mir Ruby angeschaut, dann kann mann immer noch wechseln 
Diese Woche bleibt hängen und hilft einem auch beim PHP programmieren. 
Je nachdem welche Sprache einem gefällt und die einem liegt kann mann dann die jeweiligen Webkonzepte lernen. Eben z.b Django auf Pythonbasis oder Ruby on Rails.


----------



## Sven Mintel (21. Juni 2006)

Na das ist doch mal ein Wort...werds mir notieren, und sobald ich Zeit habe mir die vorgeschlagenen Alternativen mal anschauen


----------



## Gumbo (21. Juni 2006)

Ich hatte schon lange vor mich mal mit Ruby und speziell mit Ruby on Rails zu beschäftigen. Das werde ich jetzt gleich nachholen.

Deine Predigt hat wohl gewirkt.


----------



## SilentWarrior (21. Juni 2006)

Gumbo hat gesagt.:
			
		

> Deine Predigt hat wohl gewirkt.


Bei mir auch. Christian Fein, Forumsprediger.  Hat jemand ein paar gute Links am Start?


----------



## Christian Fein (21. Juni 2006)

Um überlblick verschaffen ist Wikipedia immer gut 
http://de.wikipedia.org/wiki/Perl
http://de.wikipedia.org/wiki/Python_ Programmiersprache
http://de.wikipedia.org/wiki/Ruby_Programmiersprache

Ruby Buch Deutsch:
http://home.vrweb.de/~juergen.katins/ruby/buch/

Python deutsch: 
http://starship.python.net/crew/gherman/publications/tut-de/online/tut/

Python englisch (sehr gutes buch):
http://www.diveintopython.org/

Netter artikel zum Überblick verschaffen:
http://www.heise.de/ix/artikel/1999/11/184/

DJango Python Webframework
http://www.djangoproject.com/

Ruby on Rails
http://www.rubyonrails.org/

Perl auf Selfhtml
http://de.selfhtml.org/perl/index.htm

Deutsches Perl Buch
http://www.tekromancer.com/perl2/inhalt.html


----------



## fanste (21. Juni 2006)

Ich denke, ich werde nun auch mal anfangen neue Sprachen auszuprobieren. Hatte ich schon oft vor, dachte aber immer, dass das so ein rießiger Aufwand wird, bis man zu ein paar Ergebnissen kommt. Aber hier hieß es ja, dass die Sprachen vom Prinzip her (fast) alle gleich sind und ein Umstieg daher nicht so schwer ist.

Welche Sprache ist eurer Meinung nach am Besten zu erlernen, wenn man sich mit PHP (auch ein paar Java- und JS-Kenntnisse sind vorhanden) auskennt?


----------



## Christian Fein (21. Juni 2006)

Ich hab hier 3 Sprachen genannt. 

Python und Ruby sind beide recht einfach. 
Ich preferiere Python vor Ruby. Aber das aus dem subjectiven Grund das ich die Syntax mehr mag. Ansonsten gleichen die sich im Anwendungsgebiet und Austattung.

Schau dir einfach die Links zu Wikipedia von Python / Ruby / Perl an. Und dann entscheide.
Es ist auch so das wenn jemand Python gelernt hat, schnell mit Ruby klar kommt. Und umgekehrt.


----------



## Mark (21. Juni 2006)

Hi!

Ich möchte mein obiges "Perl-Programmierer" hiermit ganz offiziell wieder gestrichen wissen! Bin noch ganz angeschlagen von 4 Perl-Kultur und Spaß  ...meine "Challenge" endet bei "endlich keine Fehlermeldungen mehr" und die machen nebenbei noch ein Gedicht daraus 

Liebe Grüße,
Mark.


----------



## Matthias Reitinger (21. Juni 2006)

Hallo,

na dann will ich euch mal den Einstieg in Ruby erleichtern 


Sehr cool: Ruby im Browser ausprobieren: try ruby! (z.Zt. anscheinend nicht erreichbar)
Offizielle Website: http://www.ruby-lang.org/
Dokumentation: http://www.ruby-doc.org/
Die „Pickaxe“: _das_ Ruby-Buch schlechthin. Die inzwischen veraltete (auf Ruby 1.6 bezogene) erste Fassung ist frei erhältlich. Es lohnt sich aber, sich die aktuelle Fassung zu holen.
Vollkommen abgedrehte Ruby-Einführung: Why's (Poignant) Guide to Ruby
RubyForge: Praktisch wie SourceForge, aber nur für Rubyprojekte
rubyforen.de: Nettes deutschsprachiges Rubyforum
RubyWiki: Die dazugehörige Wiki

Viel Spaß mit Ruby 

Grüße,
 Matthias


----------



## Admi (22. Juni 2006)

Habt ihr auch mal den Zeitfaktor bedacht? Nicht jeder ist von Beruf aus in der EDV Tätig und möchte auch keine Unsummen für ne kleine superstandardisierte Webseite ausgeben.

Die Leute basteln halt lieber selbst und finden gerade zu PHP, MySQL viel Literatur, Tutorials, Helfer und auch ne ganze Menge bereits fertiger Skripte zu den gängigsten "Modulen".

Eine richtig gehypte Technik (wie das Sprachgemisch AJAX) kann sicherlich einiges auslösen, aber um den "Webstandard" PHP abzulösen gehört schon mehr dazu. Ihr könnt das nicht nur aus eurer EDV-eingeschränkten Sicht sehen (hier diskutieren ja fast nur Mods/Fachleute). "Hobbyentwickler" haben eine andere Sicht. Für sie zählt nur das Ergebnis. Ob auf dem Weg dahin 50 Markup-Fehler oder ein umständlicher Code liegen, interessiert da nicht. Hauptsache ist Funktion und Aussehen.


----------



## Dennis Wronka (22. Juni 2006)

Das Problem ist heutzutage aber einfach auch, unabhaengig von der Programmiersprache, dass es im Internet viele boese Menschen gibt und noch mehr Vollidioten die meinen sie waeren boese Menschen. 
Dementsprechend ist es auch wichtig, dass sich auch Hobby-Scripter mit vernuenftiger und vor allem sicherer Programmierung auseinandersetzen.
Etwas als Hobby zu machen heisst ja nicht, dass man es nicht gut/gewissenhaft/gruendlich macht, nur weil es ja nicht der Beruf ist.


----------



## Christian Fein (22. Juni 2006)

Admi hat gesagt.:
			
		

> Eine richtig gehypte Technik (wie das Sprachgemisch AJAX) kann sicherlich einiges auslösen, aber um den "Webstandard" PHP abzulösen gehört schon mehr dazu. Ihr könnt das nicht nur aus eurer EDV-eingeschränkten Sicht sehen (hier diskutieren ja fast nur Mods/Fachleute). "Hobbyentwickler" haben eine andere Sicht. Für sie zählt nur das Ergebnis. Ob auf dem Weg dahin 50 Markup-Fehler oder ein umständlicher Code liegen, interessiert da nicht. Hauptsache ist Funktion und Aussehen.



Du machst aber einen entscheidenden Fehler. Du gehst davon aus das nur PHP einfach und schnell erlernbar ist.

Das ist aber falsch. 

Jeder mit PHP klar gekommen ist, und das programmieren kann. Der kommt auch recht schnell mit Python (bsp) klar.


----------



## Gumbo (22. Juni 2006)

Dafür ist der Einstieg in PHP dank XAMPP wesentlich schneller: Einfach runterladen, installieren/entpacken, Apache-Server starten und schon kann es losgehen.

Bei Ruby on Rails sieht das etas anders aus: Ich habe gestern nacht noch mit der Installation von Ruby on Rails auf Mac OS  begonnen und habe es leider erst nach dem zweiten Anlauf geschafft – die einzelnen Befehle zu kopieren, sollte aber eigenglich nicht schwer sein. Doch dann wird es kniffelig. Denn diese Anleitung endet hier. Wie geht’s nun weiter? Zum Glück nimmt sich auch Apple diesem Thema an und erklärt, wie man Ruby on Rails zur Web-Entwicklung auf Mac OS X verwendet. Da werde ich mich jetzt erst einmal durcharbeiten müssen.


----------



## Christian Fein (22. Juni 2006)

Nun Ruby on Rails ist nicht die Programmiersprache. Ruby on Rails ist ein Webframework. 
Du solltest erst Ruby lernen. Und das kommt als normales Setup daher.

Python:
http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi

runterladen und installiern

Startmenu - Python - Starten


----------



## Admi (22. Juni 2006)

So, grad mal in der Pause durch den Buchladen (4 Etagen-also große Auswahl) gelaufen und nach Literatur gesucht. Mageres Ergebnis war:

Phyton: 1 Minibuch (in grün/schwarz)
Cobol: 1 Buch englisch
Delphi: 4 Bücher

Das ist in meinen Augen einfach keine Grundlage. Die Webseite von Phyton ist auch nur in Englisch und dann noch in so einem roten Augenkrebslayout. Dazu die Minicommunity. Was nützt mir da eine "ausgereifte" Sprache, die keiner sonst nutzt, die kaum angeboten wird, die einem keiner groß erklären kann (Stichwort: Autodidakten), wo es kaum Tutorials gibt und in die man sich erst monatelang einarbeiten muss?

Sicherheitslücken, Fehler in der Sprache oder im Code wirds in jeder Sprache geben. Das ist keine Sache, die alleine von PHP ausgeht.

Mit PHP kann man so denk ich mal genauso sicher schreiben, wie mit den anderen Sprachen. Und wer das nicht tut, der hat meist nur den eigenen Schaden.


----------



## Dennis Wronka (22. Juni 2006)

Natuerlich kann man auch in anderen Sprachen unsicher schreiben. Es waere einfach mal sinnvoll wenn sich die Leute einfach mal ein wenig mehr damit beschaeftigen wuerden als einfach nur immer schnellstmoeglich ein cooles PHP-Script auf die Seite klatschen zu wollen.
Ich hab hier auch noch 2 Klassen die im Grunde funktionieren. Nur will ich die erstmal noch etwas austesten und auch noch ein paar Zeilen Code zur Fehlerbehandlung einbauen bevor ich diese auch hier als Tutorial poste.

Dass Leute die sich nicht hinreichend mit PHP beschaeftigen und somit dann zu haesslichem und unsicherem Code tendieren dies in einer anderen Sprache genauso machen wuerden ist keine Frage, aber es gibt halt an PHP durchaus ein paar Eigenheiten die wirklich nicht sein muessten und interoperablen Code foerdern. Wofuer zum Teufel braucht man denn 4 Wege dem Interpreter klarzumachen, dass jetzt PHP-Code kommt?
<? ?> kann per php.ini deaktiviert werden und ist somit eh uninteressant.
<% %> kann auch deaktiviert werden und mutet sowieso so ASP-maessig an (heissen ja auch nicht umsonst ASP-Tags), ist also auch uninteressant. Weiterhin kann mich auch nicht erinnern mal ein PHP-Script gesehen zu haben in dem diese Tags genutzt werden.
<script language="php"> hab ich auch noch nicht gesehen, hat auch ziemlich was von JavaScript, und duerfte nicht mal sauberem HTML entsprechen weil, wenn ich mich recht erinnere <script> das Attribut type will und nicht language (auch wenn es funktioniert).


----------



## Christian Fein (22. Juni 2006)

> So, grad mal in der Pause durch den Buchladen (4 Etagen-also große Auswahl) gelaufen und nach Literatur gesucht. Mageres Ergebnis war:
> 
> Phyton: 1 Minibuch (in grün/schwarz)



du redest von diesem Buch:
http://www.amazon.de/exec/obidos/AS...976223/sr=8-2/ref=pd_ka_2/028-4450182-8474151

Das ist sogar sehr gut. Das liegt bei mir hier rum 



> Cobol: 1 Buch englisch
> Delphi: 4 Bücher



Zu Cobol und Delphi hat dir auch keiner geraten. Aber die Buchauswahl spricht eher gegen dein Buchhändler als gegen eine Sprache.

http://www.amazon.de/exec/obidos/AS...976223/sr=8-4/ref=pd_ka_4/028-4450182-8474151
Kann ich dir empfehlen wenn du es wirklich vorhast. 
Bestellungen bei Amazon dauern meist nur 2 Tage bis sie da sind (hatte auch schon am nächsten Tag ) 



> Das ist in meinen Augen einfach keine Grundlage. Die Webseite von Phyton ist auch nur in Englisch und dann noch in so einem roten Augenkrebslayout.



http://www.python.org
rot? da ist nichts rot. 
python-forum.de ist deutsch 



> Dazu die Minicommunity. Was nützt mir da eine "ausgereifte" Sprache, die keiner sonst nutzt, die kaum angeboten wird, die einem keiner groß erklären kann (Stichwort: Autodidakten), wo es kaum Tutorials gibt und in die man sich erst monatelang einarbeiten muss?


http://www.python-forum.de/ 



> Sicherheitslücken, Fehler in der Sprache oder im Code wirds in jeder Sprache geben. Das ist keine Sache, die alleine von PHP ausgeht.



Sicher. Nur ist PHP hier Schlusslicht.



> Mit PHP kann man so denk ich mal genauso sicher schreiben, wie mit den anderen Sprachen. Und wer das nicht tut, der hat meist nur den eigenen Schaden.



Sag doch gleich das du kein Python/Ruby lernen willst. Keiner zwingt dich.
Wenn du solch komische Ausreden wie "keine Bücher in meinem Buchladen" - "rote hässliche Webseite" (wo du da ein rot siehst weiss ich nicht) bringst dann kann das 
nur bedeuten das du überhaupt keine Lust hast dir eine andere Sprache anzulernen
und das irgendwie vor dir selber rechtfertigen willst.
Dann tu es nicht. Keiner zwingt dich.



> Was nützt mir da eine "ausgereifte" Sprache, die keiner sonst nutzt, die kaum angeboten wird, die einem keiner groß erklären kann (Stichwort: Autodidakten), wo es kaum Tutorials gibt und in die man sich erst monatelang einarbeiten muss?


Das ist blödsinn und falsch.  

Tutorials in masse:
http://www.onlamp.com/python/

Anfangen mit Python. Deutsches gutes Buch Kap 1 und 2 (für den Anfang mehr als ausreichend)
http://www.galileocomputing.de/download/dateien/263/galileocomputing_python.pdf

deutsches Python tutorial
http://www.freenetpages.co.uk/hp/alan.gauld/german/

Hier nochmal massenhaft links
http://wiki.python.de/FAQ#WieFangeIchAlsEinsteigerAn

Aber wenn mann nicht will, dann findet mann auch nichts...


----------



## Christian Fein (22. Juni 2006)

Video tutorials zu python:http://showmedo.com/

Bsp http://www.morconsulting.com/ShowMeDos/PydevEclipseFabio_SorensonAAC.mov


deutsche tutorials 
http://wiki.python.de/Tipps_und_Tricks


----------



## Admi (22. Juni 2006)

Nur weil es nicht deine Meinung ist, muss es noch lange kein Blödsinn sein. 

Sorry, mit "rot" war die Rubywebseite gemeint, was ja anscheinend aus Phyton hervorgeht.

Im Grunde ists mir reichlich egal, wer in was programmiert. Schließlich ist es nicht mein Job, sondern nur ein Hobby, dem ich hin und wieder mal nachgehe, so wie viele andere im PHP- oder PS-Forum.

Umstimmen wirst du von dieser Klientel kaum jemanden: Erst recht nicht in der Art und Weise. Von Moderatoren erwarte ich da etwas mehr.


----------



## SilentWarrior (22. Juni 2006)

Admi hat gesagt.:
			
		

> Sorry, mit "rot" war die Rubywebseite gemeint, was ja anscheinend aus Phyton hervorgeht.


Yeehaw! Genauso, wie JavaScript aus Java hervorgeht.

Wie Christian schon gesagt hat: Wer nicht will, der hat schon. Werd glücklich mit PHP, die anderen hier interessieren sich dafür, mal was neues auszuprobieren. Wenn du das nicht willst, auch gut, zwingt dich ja keiner.





			
				Admi hat gesagt.:
			
		

> Umstimmen wirst du von dieser Klientel kaum jemanden


Ach ja? Das sehe ich anders:





			
				Sven Mintel hat gesagt.:
			
		

> Na das ist doch mal ein Wort...werds mir notieren, und sobald ich Zeit habe mir die vorgeschlagenen Alternativen mal anschauen





			
				Gumbo hat gesagt.:
			
		

> Ich hatte schon lange vor mich mal mit Ruby und speziell mit Ruby on Rails zu beschäftigen. Das werde ich jetzt gleich nachholen.
> 
> Deine Predigt hat wohl gewirkt.





			
				SilentWarrior hat gesagt.:
			
		

> Bei mir auch.





			
				fanste hat gesagt.:
			
		

> Ich denke, ich werde nun auch mal anfangen neue Sprachen auszuprobieren.


Das sind schon vier Leute, die dank Christians Engagement mal etwas neues ausprobieren wollen. Ich find’s gut.


----------



## NomadSoul (22. Juni 2006)

So dann sagt den Leuten doch mal wie sie die ganzen Scripte wirklich sicher machen können, die "Konzepte" stehen bereits im "PHP-Sicherheits-Thread". Aber ich habe dort noch keine Umsetzung gesehen die dem wenig versierten Nutzer/Programmierer erklärt wie er die "Vorschläge/Richtlinen" umsetzten soll.

Zu Python kann ich nicht wirklich etwas sagen, ich weiss nur das CIV 4 Python nutzt, ob nur für die KI oder mehr weis ich allerdings nicht. Werde es mir aber spätestens in den Semesterferien ansehen.(also Python nicht Civ 4 ) 

Das Problem ist einfach das sich PHP aus mir nicht ersichtlichen Gründen zum Quasi Standart in der Webentwicklung entwickelt hat. 
Und ich denke weder Perl noch Python werden PHP in dieser hinsicht den Rang ablaufen, zumindest nicht in nächster Zeit.


----------



## Dennis Wronka (22. Juni 2006)

Python wird auch in Blender zum Scripting eingesetzt.


----------



## Christian Fein (22. Juni 2006)

Admi hat gesagt.:
			
		

> Nur weil es nicht deine Meinung ist, muss es noch lange kein Blödsinn sein.



Eine Meinung setzt voraus das man sich diese gebildet hat. Aufgrund einer Roten Webseite eine Programmiersprache abzulehnen hat mit Meinungsbildung nichts zu tun.

Da du


> Sorry, mit "rot" war die Rubywebseite gemeint, was ja anscheinend aus Phyton hervorgeht.



schreibst, bestätigt das wiederrum das du auch gar kein Interresse hast dir eine Meinung zu bilden. 
Denn sonst wüsstest du das es totaler Bockmist ist den du da geschrieben hast. 



> Im Grunde ists mir reichlich egal, wer in was programmiert. Schließlich ist es nicht mein Job, sondern nur ein Hobby, dem ich hin und wieder mal nachgehe, so wie viele andere im PHP- oder PS-Forum.



Wie gesagt, jeder kann das für sich selber entscheiden. 



> Umstimmen wirst du von dieser Klientel kaum jemanden: Erst recht nicht in der Art und Weise. Von Moderatoren erwarte ich da etwas mehr.



Ich rede niemanden nach dem Mund nur weil ich Moderator bin. Ich nehme mir auch das Recht heraus wenn jemand Code präsentiert und eine frage dazu hat, ihm ganz fern ab seiner Frage auf sicherheitsrelevantem Problemen im Code hinzuweisen.

Mir persönlich ist es ziemlich egal ob jemand bei PHP bleibt oder nicht. Meine Kritik an PHP ist auch meine Meinung. Nur ist hier der Unterschied zu deiner Meinung das ich Ahnung von PHP habe, und damit lange auch mein Geld verdient habe.
Somit kann ich meine Meinung problemlos kundtun da ich sie durch selbst gemachte Erfahrung erklären kann. Ich bin nicht angewiesen eine hässliche blaue PHP Webseite als Grund zu nehmen.


----------



## Christian Fein (22. Juni 2006)

Python für .net (IronPython)
Ein Fenster mit Button 

```
from System.Windows.Forms import *
from System.Drawing import *

f = Form(Text="Windows fun with IronPython", HelpButton=True,
         MinimizeBox=False, MaximizeBox=False)

f.FormBorderStyle = FormBorderStyle.FixedDialog
f.StartPosition = FormStartPosition.CenterScreen

b1 = Button(Text="Say Something", Location=Point(30,30), Size=Size(100,30))

def push(data, event):
    l = Label(Text="IronPython Is Alive!", ForeColor=Color.Red)
    l.Location = Point(30, 50+f.Controls.Count*25)
    f.Controls.Add(l)

b1.Click += push

f.Controls.Add(b1)
f.ShowDialog()
```

Python für Java (Jython)

```
from pawt import swing
import java

def exit(e): java.lang.System.exit(0)

frame = swing.JFrame('Swing Example', visible=1)
button = swing.JButton('Close Me!', actionPerformed=exit)
frame.contentPane.add(button)
frame.pack()
```


----------



## Matthias Reitinger (22. Juni 2006)

Hallo,



			
				Gumbo hat gesagt.:
			
		

> Dafür ist der Einstieg in PHP dank XAMPP wesentlich schneller: Einfach runterladen, installieren/entpacken, Apache-Server starten und schon kann es losgehen.


Da haben es zumindest Windowsbenutzer ähnlich leicht: mit dem One-Click Ruby Installer ist die Installation auch im Handumdrehen erledigt.

Grüße,
 Matthias


----------



## Sven Mintel (23. Juni 2006)

Was soll das Gezeter...

das hier ist tutorials.de ...der Name soll ja irgendwo Sinn machen.

Ich selbst mache auch beruflich was anderes...sehr anders sogar :suspekt:
Aber wir sind doch nicht hier, um bereits gegessene Suppe nochmals auszulöffeln, sondern um neue zu kochen, ....und da kann man doch auch mal ein neues Rezept ausprobieren 

Lernen tut schliesslich nicht weh.


----------



## Dennis Wronka (23. Juni 2006)

Sven Mintel hat gesagt.:
			
		

> Lernen tut schliesslich nicht weh.


Das sag mal einem der im Karate-Unterricht staendig auf die Fresse kriegt.


----------



## Sven Mintel (23. Juni 2006)

Kein Wunder....wenn du dich nur von Triops und Erdbeerem ernährst, was soll da schon bei rauskommen


----------



## Dennis Wronka (23. Juni 2006)

Ich kann Dir ja mal so ein Vieh schicken, natuerlich ohne Gebrauchsanleitung. Dann kannst Du mal gucken wie Du den gekocht kriegst.
Aber wir kommen vom Thema ab, daher: PHP verleitet zu nicht interoperablem Scripting.


----------



## SilentWarrior (23. Juni 2006)

Matthias Reitinger hat gesagt.:
			
		

> Da haben es zumindest Windowsbenutzer ähnlich leicht: mit dem One-Click Ruby Installer ist die Installation auch im Handumdrehen erledigt.


Cool! Danke für den Link, ich hatte schon befürchtet, es stünde wieder ein stundenlanges Herumgesuche im Netz an.


----------



## Gumbo (23. Juni 2006)

Christian Fein hat gesagt.:
			
		

> Nun Ruby on Rails ist nicht die Programmiersprache. Ruby on Rails ist ein Webframework.
> Du solltest erst Ruby lernen. Und das kommt als normales Setup daher.


Ich weiß, dass nur Ruby die Programmiersprache ist und Ruby on Rails ein Web-Framework ist. Doch da ich es sowieso darauf hinauslaufen lassen wollte, hab ich direkt Ruby on Rails installiert. Zumal Ruby ja dabei ist, kann ich ja jetzt auch vorerst nur mit Ruby allein arbeiten.

Gibt es eigentlich irgendwelche Ruby-Coding-Standards?


----------



## Dennis Wronka (23. Juni 2006)

Ruby selbst hab ich mal installiert weil irgendwas das zum kompilieren brauchte (ich glaub eines der KDE-Pakete). Das war bisher aber mein Kontakt zu Ruby.
Wie gesagt, ich beschaeftige mich nach Bedarf mit Programmiersprachen, und zur Zeit hab ich wenig Bedarf an Ruby. Selbst fuer PHP hab ich ja daheim zur Zeit kaum Zeit. Das meiste was bei mir privat an "Programmiererei" abgeht ist Bash-Scripting.
Auf der Arbeit hab ich noch genug mit meinem PHP-Projekt zu tun und dann muss ich hier ja auch noch dieses schimmelige ASP (ohne .NET!) lernen.


----------



## Matthias Reitinger (23. Juni 2006)

Hallo,

das wirklich coole an diesem One-Click-Installer ist, dass RubyGems gleich mitgeliefert wird. Was apt für Debian(oide) ist, ist gem nämlich für Ruby: ein Paketsystem, mit dem man bequem Rubyprojekte (sogeannte „Gems“) von einem zentralen Server (die schon erwähnte Rubyforge) beziehen und automatisch installieren lassen kann – inklusiven Auflösung von Abhängigkeiten, versteht sich.

Rails richtet man bspw. ein, indem man gem install -r rails in die Konsole hämmert. Und schon werden die jeweils aktuellsten Pakete (ActionMailer, ActionPack, ActiveRecord, ActiveSupport und Rails selber) in die lokale Rubyinstallation eingepflegt.

Und das schöne daran: wenn man selber an einem Projekt werkelt und dieses anderen zur Verfügung stellen will, kann man relativ simpel ein eigenes Gem erstellen und darf (was sag ich: soll sogar ) das dann in der http://rubyforge.org veröffentlichen. Dadurch haben sich inzwischen schon viele Rubyprojekte zentrale an dieser Stelle gesammelt. Kein stundenlanges googeln mehr, wenn man mal eine bestimmte Klasse oder eine bestimmte Extension (ja, auch in C geschriebene Erweiterungen gibt es als Gems, wahlweise als Binärdatei oder zum selberbacken) sucht, und kein nervenraubendes Aufsetzen von PEAR o.ä. 

Meiner Meinung nach ein weiterer Vorteil davon: dadurch, dass diese Gems meist kleine, sehr flexibel einsetzbare Module darstellen und RubyGems von offizieller Seite gefördert und unterstützt wird (ab Ruby 1.9 bzw. 2.0 soll es auch in der Standarddistribution enthalten sein, wenn ich mich nicht irre), verringert sich die Gefahr von Codeduplikation auf die gesamte Community gesehen. Jeder schlaue Rubyist (und das ist er schon von Haus aus, weil er ja auf Ruby setzt ) schaut nämlich erst mal bei Rubyforge vorbei und verwendet dann bei Bedarf ein Gem, bevor er das Rad neu erfindet. Dadurch ergibt sich auch ein gewisser Wiedererkennungseffekt, wenn man ein Gem schon mal eingesetzt hat und dieses dann bei einem anderen Projekt auch verwendet wird. Bei vielen PHP-Lösungen (um mal die Kurve zu kriegen) ist es ja leider so, dass da jeder sein eigenes Süppchen kocht (bei Datenbankanbindung, Sessionhandling, Benutzerverwaltung etc.). Natürlich gibt es dort auch einige „Standards“, die recht verbreitet sind (AdoDB und Smarty, um nur mal zwei zu nennen), aber meiner Ansicht nach nicht in dem Grade, wie das mit Ruby praktiziert wird.

So, nach dieser kleinen Abhandlung bin ich dann wieder mal Pickaxe lesen. 

Viel Spaß und Erfolg an alle, die sich jetzt mit Ruby beschäftigen!

Grüße,
 Matthias

PS: Wer mal ein bisschen in Rails reinschnuppern möchte, dem sei der Artikel Rolling with Ruby on Rails von Curt Hibbs an's Herz gelegt. Dazu gibt es auch eine Fortsetzung.

PPS:





			
				Gumbo hat gesagt.:
			
		

> Gibt es eigentlich irgendwelche Ruby-Coding-Standards?


Bei Ruby wird schon viel durch die Syntax vorgegeben. Aber ansonsten hat sich das Einrücken mit zwei Leerzeichen pro Ebene durchgesetzt. Da du Rails ja schon installiert hast, wusel dich doch einfach mal durch dessen Quellcode durch  An dessen Codeformatierung (ich hoffe mal, dass du darauf hinaus wolltest) halten sich nämlich die meisten Rubyprogrammierer.


----------



## Norbert Eder (23. Juni 2006)

Da das Thema "Programmierung" als Hobby aufkam, muss ich ein paar Worte loswerden:

Genau darin liegt das Problem. Viele glauben, sich schnell so nebenbei mal die 1000. Gallery zu bauen, oder eine super-tolle-dynamische Homepage. Wie passiert dies? Es wird eine PHP Version heruntergeladen und mit dieser wird dann jahrelang gearbeitet. Keiner interessiert sich für Updates, für Dokumente bezüglich Sicherheit, etc. denn das würde ja sehr viel Zeit kosten und die hat man ja nicht. Weil es eben ein Hobby ist. Und das ist falsch. Softwareentwicklung ist jedoch ein kompleter Berufszweig, der eben mal nicht so locker nebenbei erlernt und ausgeübt werden kann. Es ist aufwändig, es ist viel zu lernen und es darf kein Stehenbleiben geben. Ich kann auch nicht eben mal so in meiner Freizeit ein komplettes Haus alleine hinstellen, weil ich der Meinung bin, ich bekomm eine kleine Mauer gerade hin, also wird ein Haus auch funktionieren. Dem ist nicht so.

Und zu dieser Weiterbildung gehört es eben auch für einen Programmierer/Entwickler/Architect dazu, dass er sich mit neuen, alternativen Technologien beschäftigt, als auch mit neuen Versionen der verwendeten Grundlage, ebenso wie Randfelder á la Security.

Was ich damit sagen möchte: Wer sich damit beschäftigt, soll das ausreichend tun und für Neues offen sein. Wer nicht, soll das besser anderen überlassen, die beispielsweise damit ihre Brötchen verdienen.


----------



## ZeroEnna (23. Juni 2006)

Naja, da ich selbst viel mit PHP programmiere, will ich auch mal meinen Senf dazu geben 

Klar ist PHP nicht das Mass aller Dinge. Wie schon von vielen erwähnt, kopieren die meisten ihre PHP-Scripte aus Tutorials oder ähnlichem, ohne sich gross Gedanken darüber zu machen ob das Script auch wirklich sicher und effizient ist.
Die meisten Tutorials dienen nur als Anregung und sollen Möglichkeiten zur Lösung bestimmter Problematiken aufzeigen. Um die Sicherheit muss man sich immer noch selbst kümmern.

Weiterhin wurde hier die Inkonsistenz von PHP angesprochen. Dies ist eines der grössten Mankos. Ursache hierfür ist letztendlich, dass die Entwickler von PHP immer viel zu grossen Wert auf die abwärts Kompatibilität gelegt haben und so veraltete Methoden und Funktionen immer in der Sprache enthalten geblieben sind. Eine weitere Ursache für die Inkonsistenz ist sicher auch, dass sehr viele Leute an der Entwicklung beteiligt sind, ohne dass es wirklich klar definierte Regeln gibt, wie die Funktionen benannt werden müssen. Es gibt zwar ein paar Dokumente die das versucht haben zu lösen, aber kaum jemand hält sich daran. Hier müsste man viel härter durchgreifen.

Viele behaupten auch, dass man mit PHP nicht objektorientiert programmieren kann. Dem kann ich nicht ganz zustimmen. In PHP 5 sind viele Aspekte der OOP hinzugekommen. Natürlich kann man dies nicht mit Sprachen wie z.B. JAVA vergleichen, aber es ist zumindest schon mal ein Anfang. Kaum jemand versucht wirklich objektorientiert zu programmieren mit PHP. Aber genau dies währe ein Ansatz um häufige Sicherheitsprobleme zu umgehen. Denn je mehr man Objektorientiert programmiert, umso leichter fällt auch das debugen. Ich zumindest hoffe, dass die Entwickler von PHP in der Version 6 nicht mehr so extrem auf abwärts Kompatibilität achten und dass sie dadurch die Sprache auch ein bisschen "säubern".


Aber wie schon von vielen erwähnt, sollte man auch immer Ausschau nach alternativen halten. Ich beschäftige mich in letzter Zeit vermehrt mit Ruby. Es ist wirklich eine sehr elegante Sprache und sie ist auch sehr leicht zu erlernen. Was mir besonders gefällt, ist die Anlehnung an Smalltalk. Ruby wird in Zukunft sicher eine grosse Rolle spielen (so wie es im asiatischen Raum jetzt schon ist), vor allem weil es immer mehr deutschsprachige Lektüre dazu gibt.
Weiterhin möchte ich euch für die Links zu den Ruby-Seiten danken, da waren ein paar dabei die ich noch nicht kannte.

Da hier (oder zumindest hier im Thread) ziemlich viel Interesse an Ruby gezeigt wird, wäre es doch auch mal an der Zeit hier im Forum mal eine Ruby Sektion ei zu richten. Denn leider ist die deutschsprachige Community von Ruby noch nicht extrem gross und mit der Einführung einer Ruby-Sektion hier im Forum würde tutorials.de sicher auch einen grossen Beitrag zum Vorstoss von Ruby leisten.

So, dass war’s dann erstmal von mir. Sorry, falls ich hier totalen Schwachsinn von mir gegeben habe 

mfG
ZeroEnna


----------



## Christian Fein (24. Juni 2006)

ZeroEnna hat gesagt.:
			
		

> Weiterhin wurde hier die Inkonsistenz von PHP angesprochen. Dies ist eines der grössten Mankos. Ursache hierfür ist letztendlich, dass die Entwickler von PHP immer viel zu grossen Wert auf die abwärts Kompatibilität gelegt haben und so veraltete Methoden und Funktionen immer in der Sprache enthalten geblieben sind.



sorry aber das ist Blödsinn. Abwärts Kompatiblität bieten andere Sprachen genauso !ohne! das deswegen eine solche Inkonsistenz auftritt.
Wohl weil in anderen Sprachen diese Fehler nicht so intensiev gemacht wurden im Vergleich zu PHP.



> Eine weitere Ursache für die Inkonsistenz ist sicher auch, dass sehr viele Leute an der Entwicklung beteiligt sind, ohne dass es wirklich klar definierte Regeln gibt, wie die Funktionen benannt werden müssen. Es gibt zwar ein paar Dokumente die das versucht haben zu lösen, aber kaum jemand hält sich daran. Hier müsste man viel härter durchgreifen.



Wenn sowenig Kontrolle erfolgt, ist mein Vertrauen in die Sprache sowieso = 0. OpenSource bedeutet nicht ohne Kontrolle und System. Wenn der Kernel nach der
Methode entwickelt würde das es keinen Interressiert wie etwas programmiert wurde, dann hätten wir nichtmals annähernd den Status in Sicherheit und Stabilität im Linux Kernel. Auch das Debian Projekt, welches nun sehr auf OpenSource achtet hat da 
ganz klare Regeln.
Wenn sowas bei der PHP Entwicklung nicht beachtet wird dann taugt da etwas nicht.



> Viele behaupten auch, dass man mit PHP nicht objektorientiert programmieren kann. Dem kann ich nicht ganz zustimmen. In PHP 5 sind viele Aspekte der OOP hinzugekommen. Natürlich kann man dies nicht mit Sprachen wie z.B. JAVA vergleichen, aber es ist zumindest schon mal ein Anfang. Kaum jemand versucht wirklich objektorientiert zu programmieren mit PHP.



Das OOP Konzept von PHP ist Müll. Es ist die Kopie von Java. Es ist deswegen Müll weil PHP als Scriptsprache ganz andere Möglichkeiten hat wie eine Sprache Java. 
Zudem erlaubt PHP nur das OOP Programmieren, ist aber selber keine OOP Sprache. Mann erkennt es daran das der Standardumang nur mit Funktionen daher kommt.
Geöffnete Dateien werden in Handles gespeichert und nicht in File Objekten. Der ganze Sprachumfang von PHP ist auf prozeduale Programmierung ausgelegt und hat mit OOP
gar nichts zu tun.
Deshalb kann ich mich an kein PHP Projekt errinnern das ich bisher im SourceCode gesehen habe (und ich habe einige gesehen) das OOP sauber umgesetzt hat.
In Python und Ruby, sind auch Methoden Objecte. Sie brauchen sich nicht an OOP von Java zu orientieren da sie durch ihre Dynamic da noch einen draufsetzen können.
Da Scriptsprachen wie Ruby,  Python um einiges langsamer sind als Java/.net/  (dafür um einiges schneller als PHP) müssen sie andere Vorteile bieten. Das tun sie durch die erweiterten OOP / Funktionalen Möglichkeiten wie Pythons map() filter() reduce() generatoren usw.
PHP bietet im Sprachdesign aber gegenüber C#/ Java überhaupt keine Vorteile, sondern nur Nachteile. Gepaart mit einer noch langsameren Ausführungsgeschwindigkeit als andere Scriptsprachen.



> Aber genau dies währe ein Ansatz um häufige Sicherheitsprobleme zu umgehen. Denn je mehr man Objektorientiert programmiert, umso leichter fällt auch das debugen. Ich zumindest hoffe, dass die Entwickler von PHP in der Version 6 nicht mehr so extrem auf abwärts Kompatibilität achten und dass sie dadurch die Sprache auch ein bisschen "säubern".



Mann bastelt an PHPs OOP Fähigkeit seid Version 3 rum. Und genauso alt ist der Wunsch das auch der Sprachumfang überarbeitet wird. Vielleicht wirds mit Version 9 was .... Bis dahin ists einfach nur "crap!"



> Aber wie schon von vielen erwähnt, sollte man auch immer Ausschau nach alternativen halten. Ich beschäftige mich in letzter Zeit vermehrt mit Ruby. Es ist wirklich eine sehr elegante Sprache und sie ist auch sehr leicht zu erlernen. Was mir besonders gefällt, ist die Anlehnung an Smalltalk. Ruby wird in Zukunft sicher eine grosse Rolle spielen (so wie es im asiatischen Raum jetzt schon ist), vor allem weil es immer mehr deutschsprachige Lektüre dazu gibt.
> Weiterhin möchte ich euch für die Links zu den Ruby-Seiten danken, da waren ein paar dabei die ich noch nicht kannte.
> 
> Da hier (oder zumindest hier im Thread) ziemlich viel Interesse an Ruby gezeigt wird, wäre es doch auch mal an der Zeit hier im Forum mal eine Ruby Sektion ei zu richten. Denn leider ist die deutschsprachige Community von Ruby noch nicht extrem gross und mit der Einführung einer Ruby-Sektion hier im Forum würde tutorials.de sicher auch einen grossen Beitrag zum Vorstoss von Ruby leisten.



Leider bringen Foren die erstmals kaum besucht werden relativ wenig. Da fast leere Foren eine Sprache kaum puschen. 
Was viel mehr bringen würde sind einfach Beiträge / Tutorials von jenen die Python bzw Ruby einsetzen.
Im übrigen ist Python bzw Ruby  schon jetzt sehr erfolgreich und stark eingesetzt. Auch wenn das auf tutorials.de nicht erkennbar ist 



> So, dass war’s dann erstmal von mir. Sorry, falls ich hier totalen Schwachsinn von mir gegeben habe



Nö hast du nicht


----------



## MasterEvil (24. Juni 2006)

Das PHP hässlich ist würde ich nicht gerade sagen, ich finde eine Syntax die stark an Basic oder ähnliches erinnert viel hässlicher, die C ähnlich Syntax von PHP find ich viel angenehmer zu schreiben ;-] 

Sicherheits technisch ist PHP doch auch nicht wirklich "gefährlich" wenn man es richtig handhabt und konfiguriert. Mit eigenen Librarys kann man PHP dann auch noch erweitern mit eigenen Funktionen.

OOP ist wirklich nicht die Stärke von PHP aber wo braucht man das schon wirklich bei einer Website. Einfache Klassen kann man auch mit PHP4 erzeugen, zum einfachen handlen eines Warenkorbs etc. reicht es vollkommen aus. Wenn man Objekte erstellen will die nur bedingten Zugriff auf Attribute und Funktionen haben muss man halt PHP5 verwenden.

Die Namensgebung ist für wahr nicht berauschend, ein großer Nachteil von PHP aber nicht wirklich schwerwiegend wie ich finde. Mit php.net hat man eine perfekte Plattfom in der man ohne lange zu suchen genau das findet was man braucht.


----------



## Christian Fein (24. Juni 2006)

MasterEvil hat gesagt.:
			
		

> Das PHP hässlich ist würde ich nicht gerade sagen, ich finde eine Syntax die stark an Basic oder ähnliches erinnert viel hässlicher, die C ähnlich Syntax von PHP find ich viel angenehmer zu schreiben ;-]



Python und Ruby 's Syntax hat nun gar nichts mit Basic zu tun.


```
class Daemonizer:

    def main(self, args=None):
        self.options = ZDRunOptions()
        self.options.realize(args)
        self.logger = self.options.logger
        self.set_uid()
        self.run()

    def set_uid(self):
        if self.options.uid is None:
            return
        uid = os.geteuid()
        if uid != 0 and uid != self.options.uid:
            self.options.usage("only root can use -u USER to change users")
        os.setgid(self.options.gid)
        os.setuid(self.options.uid)

    def run(self):
        self.proc = Subprocess(self.options)
        self.opensocket()
        try:
            self.setsignals()
            if self.options.daemon:
                self.daemonize()
            self.runforever()
        finally:
            try:
                os.unlink(self.options.sockname)
            except os.error:
                pass

    mastersocket = None
    commandsocket = None

    def opensocket(self):
        sockname = self.options.sockname
        tempname = "%s.%d" % (sockname, os.getpid())
        self.unlink_quietly(tempname)
        while 1:
            sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
            try:
                sock.bind(tempname)
                os.chmod(tempname, 0700)
                try:
                    os.link(tempname, sockname)
                    break
                except os.error:
                    # Lock contention, or stale socket.
                    self.checkopen()
                    # Stale socket -- delete, sleep, and try again.
                    msg = "Unlinking stale socket %s; sleep 1" % sockname
                    sys.stderr.write(msg + "\n")
                    self.logger.warn(msg)
                    self.unlink_quietly(sockname)
                    sock.close()
                    time.sleep(1)
                    continue
            finally:
                self.unlink_quietly(tempname)
        sock.listen(1)
        sock.setblocking(0)
        self.mastersocket = sock

    def unlink_quietly(self, filename):
        try:
            os.unlink(filename)
        except os.error:
            pass

    def checkopen(self):
        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        try:
            s.connect(self.options.sockname)
            s.send("status\n")
            data = s.recv(1000)
            s.close()
        except socket.error:
            pass
        else:
            while data.endswith("\n"):
                data = data[:-1]
            msg = ("Another zrdun is already up using socket %r:\n%s" %
                   (self.options.sockname, data))
            sys.stderr.write(msg + "\n")
            self.logger.critical(msg)
            sys.exit(1)
```



> technisch ist PHP doch auch nicht wirklich "gefährlich" wenn man es richtig handhabt und konfiguriert. Mit eigenen Librarys kann man PHP dann auch noch erweitern mit eigenen Funktionen.



Doch ist es. Denn PHP verleitet zu schlechter Programmierung. Und schlechte Programmierung ist das was mann eigentlich in fast jedem PHP Code entdeckt.
Es sieht doch so aus das mann zwar erkannt hat das globale Variablen ein Sicherheitsrisiko sind (hat ja lang genug gedauert) aber schreckt davor zurück register_globals = on gleich zu verbieten.
Resultat: nicht wenige Hoster erlauben register_globals. Womit selbst jene Scripte die auf register_globals off gestrickt sind leider damit handeln müssen. Oder aber jener Programmierer muss darauf achten global Variablen in seiner .htaccess umzustellen.
Das zeigt aber das PHP in Sicherheitsfragen genauso konzeptionslos ist wie bei der benennung.




> OOP ist wirklich nicht die Stärke von PHP aber wo braucht man das schon wirklich bei einer Website. Einfache Klassen kann man auch mit PHP4 erzeugen, zum einfachen handlen eines Warenkorbs etc. reicht es vollkommen aus. Wenn man Objekte erstellen will die nur bedingten Zugriff auf Attribute und Funktionen haben muss man halt PHP5 verwenden.



OOP ist etwas mehr als Klassen erzeugen. Ich habe schon geschrieben das keine Exception geworfen wird, die mann abfangen könnte, wenn eine Datei nicht lesbar ist.
Nein PHP geht noch nen Schritt weiter richtung bescheuert und erlaubt es sogar mit @ komplette Fehlermeldungen / Fehlschläge zu ignorieren.
Und das ist für ein Warenkorb sehr wichtig. Welcher Webshop Anbieter will denn gerne 
Waren verschicken ohne das jene Bestellung auch unter Rechnungen protokolliert wird.
Wenn du denkst sowas kommt nicht vor, hast du dich geeirrt. Genauo so ein Webshop habe ich vor ein paar Jahren mal fixen müssen. 
Der "Programmierer" hatte nach dem Bestellauftrag ein fehlgeschlagenen MySQL Query ignoriert. Weshalb ein paar Bestellungen raus gingen ohne das dafür eine Rechnung erstellt wurde.




> Die Namensgebung ist für wahr nicht berauschend, ein großer Nachteil von PHP aber nicht wirklich schwerwiegend wie ich finde. Mit php.net hat man eine perfekte Plattfom in der man ohne lange zu suchen genau das findet was man braucht.



PHP ist auch die einzige Sprache die ich kenne in der mann permanent mit einem Auge in der Doku verbringen muss.
Oder wer weiss denn schon Auswendig welche dieser 14 Escaping Funktionen  aktuell am besten passt:

dbx_escape_string, escapeshellarg, escapeshellcmd, pg_escape_bytea,
    pg_escape_string, pg_unescape_bytea, addslashes, addcslashes, preg_quote,
    quotemeta, mysql_escape_string, mysql_real_escape_string,
    mysqli_real_escape_string, sqlite_escape_string

...


----------



## Nico Graichen (24. Juni 2006)

MasterEvil hat gesagt.:
			
		

> Das PHP hässlich ist würde ich nicht gerade sagen, ich finde eine Syntax die stark an Basic oder ähnliches erinnert viel hässlicher, die C ähnlich Syntax von PHP find ich viel angenehmer zu schreiben ;-]


Also ich finde es mehr als hässlich wenn im Quellcode jedes dritte Zeichen ein Sonderzeichen ist.


			
				MasterEvil hat gesagt.:
			
		

> Sicherheits technisch ist PHP doch auch nicht wirklich "gefährlich" wenn man es richtig handhabt und konfiguriert. Mit eigenen Librarys kann man PHP dann auch noch erweitern mit eigenen Funktionen.


Genau hier liegt aber das Problem. Das Wenn. Wenn man es richtig handhabt und konfiguriert. Wer der meisten Php-User macht das aber?
Viele kopieren sich ihre Seite zusammen und nennen sich dann auch noch Webdesigner.


			
				MasterEvil hat gesagt.:
			
		

> OOP ist wirklich nicht die Stärke von PHP aber wo braucht man das schon wirklich bei einer Website. Einfache Klassen kann man auch mit PHP4 erzeugen, zum einfachen handlen eines Warenkorbs etc. reicht es vollkommen aus. Wenn man Objekte erstellen will die nur bedingten Zugriff auf Attribute und Funktionen haben muss man halt PHP5 verwenden.


Bei einer einfachen Website braucht man sicherlich keine Objektorientierung. Aber es gibt Webanwendungen, die über eine Warenkorb hinausgehen. Die komplexer sind, als ein einfacher Webshop. Und da macht Objektorientierung sehr wohl Sinn.

//EDIT:
mist mal wieder zu langsam gewesen :-S


----------



## MasterEvil (24. Juni 2006)

Christian Fein hat gesagt.:
			
		

> Doch ist es. Denn PHP verleitet zu schlechter Programmierung. Und schlechte Programmierung ist das was mann eigentlich in fast jedem PHP Code entdeckt ...


Nur weil es schlechte "Programmierer" gibt, und ungeeignete Möglichkeiten, ist doch noch längst nicht die ganze Sprache schlecht.
Zur Syntax, ja ok nicht unbedingt basic *g* aber ich finde persönlich finde den Stil unschön. Vieleicht einfach nur ungewohnt weil ich auch manchmal nen bisschen was in Java mache .. vieleicht aber auch ein wenig zu sehr eingekürzt und unstrukturiert  



			
				niggo hat gesagt.:
			
		

> Bei einer einfachen Website braucht man sicherlich keine Objektorientierung. Aber es gibt Webanwendungen, die über eine Warenkorb hinausgehen. Die komplexer sind, als ein einfacher Webshop. Und da macht Objektorientierung sehr wohl Sinn.


Es macht Sinn wenn ich meinen Code anderen zur Verfügung stelle die damit arbeiten sollen. Ich wüsste aber kein richtiges Anwendungsgebiet für eine Webpräsens die objektorientierte Programmierung in vollen Umfang benötigt.


----------



## Christian Fein (25. Juni 2006)

MasterEvil hat gesagt.:
			
		

> Es macht Sinn wenn ich meinen Code anderen zur Verfügung stelle die damit arbeiten sollen. Ich wüsste aber kein richtiges Anwendungsgebiet für eine Webpräsens die objektorientierte Programmierung in vollen Umfang benötigt.



Nun genau die selben Anwendungsgebiete wie normale programme auch. 

Webanwendungen sind heuzutage keine einfachen dynamischen Webseiten mehr. Nein sie sind ersatz für eine Mene an normalen GUI Anwendungen.

Webanwendungen spiegel massenhaft an daten ab und müssen somit in bestehende Strukturen eingebastelt werden. Du kannst davon ausgehen das Webseiten von auch nicht
technischen Firmen wie z.b http://knorr.de/ mit der Firmenit verzahnt sind. 

Davon auszugehen das mann im Web nur ein Blog und ein Gästebuch veröffentlichen will und ein bischen Dynamic hier und da ist einfach falsch.


----------



## Konstantin Gross (26. Juni 2006)

Hallo Christian,
durch deine tausende Links hast du mein Interesse an Python geweckt  Mal eine Frage dazu, welche Einsatzgebiete hat den Python? Mir gefällt die Syntax schon sehr gut, nur kann ich das ja nicht zum Programmieren einer einfach Windowsanwendung nutzen. Ich verstehe das mehr in der Art das ich Programme damit steuern kann, wenn die ein Interface für Python integriert haben!? Ist das so? Für was kann ich Python den sonst noch einsetzen?

Gruss


----------



## Matthias Reitinger (27. Juni 2006)

Hallo,

für alle, die in Ruby nur mal reinschnuppern möchten: try ruby! ist wieder erreichbar.

Grüße,
 Matthias


----------



## Gumbo (27. Juni 2006)

Ah, die Ruby-Live-Konsole. Damit ist es doch oft schnelle, etwas auszuprobieren als erst noch den Befehl für Rubys eigene herauszusuchen.


----------



## Konstantin Gross (27. Juni 2006)

Kann mir jemand mal erklären wie ich [] in der Live Konsole schreiben kann? Ich krieg das einfach nicht da reingeschrieben. Kopieren und einfügen klappt auch nicht wirklich.


----------



## Gumbo (27. Juni 2006)

Bei mir klappt das. Wahrscheinlich liegt das aber nur daran, dass ich Mac OS und nicht Windows nutze.


----------



## Sven Mintel (27. Juni 2006)

Scheint am IE zu liegen..das wird wohl irgendwo geblockt, schätze ich mal


----------



## Konstantin Gross (27. Juni 2006)

Hallo,
tatsächlich liegt am IE.


----------



## Christian Fein (27. Juni 2006)

> Mir gefällt die Syntax schon sehr gut, nur kann ich das ja nicht zum Programmieren einer einfach Windowsanwendung nutzen



Wieso nicht? Du programmierst doch in .net? Microsoft hat den IronPython angestellt und IronPython (python auf .net) wird nun von MS weiterentwickelt. Du hast mit IronPython den kompletten Zugriff auf das .net Framework.
Sprich du kannst ohne Probleme in C# eine Klasse schreiben und dein Python Klasse davon ableiten. usw

Das selbe kannst du mit Python und Java machen (Jython). Mal von IronPython und Jython abgesehen hat das UrPython bindings zur Winapi (PythonOnWin), GTK und natürlich TK

Nokia bietet dir die Möglichkeit Python auf dem Handy zu programmieren 




			
				Counterfeit hat gesagt.:
			
		

> durch deine tausende Links hast du mein Interesse an Python geweckt  Mal eine Frage dazu, welche Einsatzgebiete hat den Python? .



Python ist für eine Scriptsprache schnell wie der Wind (vergleichbar Perl). Du hast Python Module für jeden Scheiss 
Du kannst Webprogrammierung, Shellscript-Ersatz, Windows Scriptting Host, Blender Plugins , 3D Programierung  usw
Google ist ein Beispiel für ein grosses bekanntes Projekt, in dem intensiev Python eingesetzt wurde



> Ich verstehe das mehr in der Art das ich Programme damit steuern kann, wenn die ein Interface für Python integriert haben!? Ist das so? Für was kann ich Python den sonst noch einsetzen?



Die Frage lautet viel eher: Für was kannst du es nicht einsetzen.


----------



## Konstantin Gross (27. Juni 2006)

Hallo,

danke für deine ausführliche Erklärung. Für mich währe dann wohl IronPython interessant, wusste ja gar nicht was man damit noch so alles machen kann außer, Plugins für Blender zu schreiben usw. Werden andere Handyhersteller vielleicht auch auf die Pythonschiene springen? Oder ist Nokia der einzigste Vorreiter?


----------



## TwoFaze (28. Juni 2006)

Toll, kaum schaut man sich nach Alternativen um, hat man die Qual der Wahl!

Mich hat der Thread bis hierhin auch gut überzeugt, allerdings kann ich mich jetzt nicht zwischen der Wahl von Python oder Ruby entscheiden.
Hat hier schon einer nach diesem Thread mit einer dieser Sprachen begonnen?
Wenn ja, kann derjenige vielleicht Gründe für seine Wahl geben?

Für Python sprechen meiner Meinung nach momentan die Eigenschaft, dass es oft zum Skripten in anderen Programmen verwendet wird.
Bei Ruby ist es das "alles ist ein Objekt", welches sicher gut für meine OOP Kenntnisse wäre.

Diese 2 Punkte machen mir momentan noch die Entscheidung schwer. Ich hoffe, ich treffe die richtige Wahl,

Gruß!


----------



## Norbert Eder (28. Juni 2006)

Lern einfach beide ;-)


----------



## TwoFaze (28. Juni 2006)

Ja, aber nicht aufeinmal 
Ich wollte mich schon etwas intensiver damit beschäftigen ;-)


----------



## SilentWarrior (28. Juni 2006)

Lies mal die Wikipedia-Artikel durch. Mich hat dadurch Python mehr überzeugt.  Aber ich würd wirklich mal beides etwas anschauen. Musst ja nicht grad ein riesiges Kompendium durchlesen, nur einen kurzen Artikel, um etwas in die Sprache einzutauchen.


----------



## AKST (28. Juni 2006)

Keine Ahnung obs schon erwähnt wurde, aber Ruby on Rails scheint ja derzeit einen kleinen Hype losgetreten zu haben und einge Stellenanzeigen verlangen auch schon Ruby on Rails Kenntnisse. Das dürfte nicht unwichtig sein.


----------



## Christian Fein (28. Juni 2006)

AKST:

Ruby on Rails = Pythons Django

Das Prinzip ist das selbe und beide sind klasse. Die neue Version tutorials.de wird u.a mit Django entwickelt.
Aber norbert hat recht. Python und Ruby gleichen sich sehr in der Art wie programmiert wird. 
Das heisst wenn mann eine Sprache davon kann, ist die andere ziemlich fix lernbar. Grundsätzlich sind beide klasse und mann kann sich einfach nicht falsch entscheiden. 
Es gibt natürlich Vorteile welche Ruby über Python hat und Python über Ruby hat.
Aber letztendlich gleicht sich das alles ziemlich aus.

Beispiel:
Ruby on Rails ist bekannter als Django
Python ist öfter in bestehende Systeme integriert
IDE Unterstützung ist in Python besser
Ruby ist etwas dynamischer als Python
Python ist etwas schneller als Ruby
Ruby ist ein wenig mehr oop als Python
Python setzt auf Parrot und wird damit stark mit Perl zusammenarbeiten können

Sprich die Liste kann mann ewig weiterführen.


----------



## AKST (28. Juni 2006)

Hallo Christian,

nur mal als Frage nebenbei. Warum wird die neue Version von tutorials mit phyton (django) realisiert und nicht mit Java? Mein Bild von Skriptsprachen ist immer, dass sie sehr elegant und schnell für gewisse Dinge einsetzbar sind. Sobald das Projekt aber größer wird, wirds mit Skriptsprachen dann unübersichtlich.


----------



## Thomas Darimont (28. Juni 2006)

Hallo!



> Sobald das Projekt aber größer wird, wirds mit Skriptsprachen dann unübersichtlich.


Diese Ansicht Teile ich mittlerweile nach einiger Erfahrung in einem grossen Projekt auf Python, Zope, Plone Basis auch... grosse Schwachpunkte waren fuer mich dabei:

Durch dynamische Typisierung kommt es nun in groesseren Systemen eher zu Typfehlern die erst zur Laufzeit festgestellt werden (wegen der dynamischen Typisierung ist kein Compiletime Checking moeglich). Das erhoeht den Aufwand fuers testen erheblich. Wenn man dann man ein paar Zeilen Code hat für die keine Testabdeckung besteht dann kanns schon mal passieren, das einem das System im Betrieb wegen Typefehlern um die Ohren fliegt... okay kann natürlich in anderen Sprachen auch passieren, auch in Java wenn man viel mit Reflection arbeitet... Hierbei sind Tools zur Ermittlung der Codecoverage / Testabdeckung unverzichtbar.

Schwieriges Debugging. Entwickungsugebungen wie das Eclipse basierte Pydev machen einem die Arbeit zwar leichter, jedoch ist das Debugging noch nicht so wirklich ausgereift. Zum einen ist es quaelend langsam und zum anderen wird auch manches mal ein Breakpoint ignoriert... aber pydev wird immer besser und auch diese Kinderkrankheiten werden bald der Vergangenheit angehoeren. Doch bis dahin wird wohl print >> sys.stderr, "BLA" oder raise ABC... der pragmatischte Weg zum Debuggen bleiben 

Aufgrund der dynamischen Eigenschaften unterstuetzt Python keine Methoden Ueberladungen, was nicht gerade schick ist und ueber Hilfskonstrukte wie optionale benannte Parameter umgangen werden kann. (... das gabs auch schon bei Visual Basic... )

Die neue Version von tutorials.de wird auch nicht komplett in django geschrieben werden. Eher werden "kleinere" Komponenten in RAD manier damit umgesetzt. 

Gruss Tom


----------



## AKST (28. Juni 2006)

Na, dann wünsche ich dir noch viel Spass Thomas, vielleicht wird die Foren-Software später auch für mich interessant.


----------



## Christian Fein (28. Juni 2006)

AKST hat gesagt.:
			
		

> Hallo Christian,
> 
> nur mal als Frage nebenbei. Warum wird die neue Version von tutorials mit phyton (django) realisiert und nicht mit Java? Mein Bild von Skriptsprachen ist immer, dass sie sehr elegant und schnell für gewisse Dinge einsetzbar sind. Sobald das Projekt aber größer wird, wirds mit Skriptsprachen dann unübersichtlich.



Nun gerade tutorials.de ist im grossen und ganzen eine CRUD Anwendung  (sprich Create - Update - Delete ) 
Wir müssen nicht mit irgendwelcher Middleware zusammenarbeiten und so hyperkomplex ist tuts.de auch nicht.
Was bleibt ist eine pure Webanwendung und hier sind so Scriptsprachen mit solchen Frameworks wie Django sehr stark.
Gerade, wie Tom angesprochen hat, RAD. 
Aber es gibt auch ganz subjective Gründe für Django/Python: Ich hab Lust darauf 
Da tutorials.de ein privates Projekt ist darf mann auch den "Lust und Laune" Faktor beachten


----------



## daddz (7. November 2006)

Tut mir Leid das ich diesen Thread aus den untiefen des Forums wieder ausgrabe, aber ich muss jetzt einfach was los werden.  

Wenn man sich mal mit einem größeren und komplexeren Projekt beschäftigt (siehe Signatur ;-) ) merkt man wie ungeeignet PHP für sowas eigentlich ist.

Wenn ich die Möglichkeit hätte, dass ganze in Ruby oder einer anderen Sprache zu machen, würde ich das sofort tun. Leider stehen mir nicht die erforderlichen Mittel zur Verfügung (Server mit Ruby), weshalb ich "leider" mit PHP arbeiten muss.

Ich verstehe nicht wie die Leute es mit PHP an so großen CMS-Projekten (o.a.) aushalten. :suspekt: 

Das musste ich jetzt einfach mal sagen.
Danke für eure Aufmerksamkeit.

greetz
daddz


----------



## kastnermario (5. Dezember 2006)

Ich habe mir nun die ellenlangen Kommentare hier durchgelesen. PHP wird verglichen mit stark typisierten Sprachen wie Java etc. Man sollte euch - glaube ich - aufmerksam machen das PHP nunmal nicht Java, C# oder was weis der Teufel auch ist. Jede Sprache hat Ihre stärken. Jede Sprache entwickelt sich unterschiedlich. Mit PHP kann jeder halbwegs denkfähige Mensch "programmieren". Ist doch auch gut so. Oder? Habt Ihre Angst um eure Jobs, wenn jemand in PHP das programmieren kann was Ihr mit den anderen höheren Sprachen mühselig in einen Editor koppt? 

Keine Angst ich bin kein Wahnsinniger PHP Freak. Ich habe auch schon Sachen in Java und C++ programmiert. Aber ich finde PHP einfach interessanter. Ist halt meine Meinung.

Ob PHP zum schlechten Programmieren verleitet sei dahingestellt. Fakt ist: Der Programmierer hat ja selbst die wahl wie sein Code aussehen soll. Ich bevorzuge das trennen von Programmier-, Layout- und Darstellungslogik. Das hat sich eben aus den grössen meiner Arbeiten als sehr vorteilhaft herrausgestellt. Aber man muss es nicht machen! Bei kleineren Projekten ist sowas: 

```
foreach ( $arrBenutzer as $strName ) {
      ....
      echo '<tr><td>' . $strName['userFullName'] . '</td></tr>';

}
```
genauso ok wie eben die angesprochene Trennung von Code und Layout.

Ich liebe es zu experimentieren. Ich mag PEAR und PECL die mir die gleiche Funktionsvielfalt bietet wie zumBeispiel die Java Swing Libaries (hier halt GUI´s). 

Durch PHP-GTK wird man auch in der Lage sein Desktop Applikationen zu schreiben, die sich (hoffentlich) genauso verhalten wie ein Programm in C. Aber das ist ja alles noch in entwicklung und noch nicht wirklich in Produktivumgebungen einsetzbar. Aber es wird!

Das PHP nicht die Merkmale von Lisp oder gar PERL hat ist doch klar. Aber überlegt doch mal wie einfach es ist mit PHP die gesamte Palette der Protokolle rauf und runter abzuarbeiten. Wie ist das in Java? Ich finde sehr umständlich!

Aber wie schon mal gesagt! Das ist eben meine Meinung. Andere haben andere Meinungen und die sind genauso ok. Jeder tut sich mit einer anderen Sprache leichter. Aber darum haben wir ja die vielen Sprachen. Ansonsten sollten wir den ganzen Schei* über Bord werfen und alle nur noch Assembler programmieren. Zugegeben. Ich kann kein Assembler aber ich stells mir witzig vor wenn man den Code den man schreibt nicht wirklich versteht ohne einen IQ von mindestens 130.


----------



## Christian Kusmanow (5. Dezember 2006)

Wir wollen aus der Softwarekriese herraus und nicht wieder hinein.


			
				Christian Kusmanow hat gesagt.:
			
		

> Ich gehe mal von deiner Frage aus, dass Du mit PHP angefangen hast?
> Wenn Du vor hast jetzt auf einmal eine richtige Programmiersprache zu lernen,
> kann ich Dir versprechen, dass Du wieder fast von vorne anfangen kannst.
> PHP ist meiner meinung nach keine Sprache für Anfänger,
> ...


http://www.tutorials.de/forum/coders-talk/259762-alternative-programmiersprache-zu-php.html

Mit einer nicht-typsicheren Sprache und ohne OOP als grundlegendes Element der Sprache Dektopanwendungen entwickeln? Was soll das werden? Sollen die User erstmal 2GB Arbeitsspeicher nachrüsten weil der Coder keinen bock hatte für jeden Wert einen Typ festzulegen?
Wie sollen dann von komplexen Anwendungen ohne OOP bereits fertige Funktionalitäten weiterverwendet werden wenn sich niemand um modularität kümmert? Wie sollen diese Funktionalitäten zudem so auch weiterentwickelt werden können?

Kannst Du dir nicht ausmalen das die Qualität der Programme generell darunter leiden würde?


			
				kastnermario hat gesagt.:
			
		

> Mit PHP kann jeder halbwegs denkfähige Mensch "programmieren". Ist doch auch gut so. Oder? Habt Ihre Angst um eure Jobs, wenn jemand in PHP das programmieren kann was Ihr mit den anderen höheren Sprachen mühselig in einen Editor koppt?


Wahnsinn. Eine Webanwendung kann man doch weiss Gott nicht mit einer Clientanwendung vergleichen.
Die Anforderungen die eine Clientanwendung stellt, bestimmen die Funktionalitäten einer Sprache.
Nur leider sehe ich nirgends das PHP für den Clientbetrieb entwickelt wurde, ergo auch keine der erforderlichen Funktionalitäten...


----------



## Gawayn (6. Dezember 2006)

Ich denke, die grundsätzliche Prämisse, von der in diesem Thread ausgegangen wird, nämlich dass PHP unheimlich viele Unterschiede zu anderen Sprachen aufweise, ist nicht korrekt. Ich spreche die Hochsprachen C/C++, Java, PHP, Delphi und BASIC (abgesehen von Grundkenntnissen in anderen Sprachen) und nutze PHP auf professioneller Basis (Softwareentwicklung für einen deutschen Großkonzern). Ich denke, ich kann PHP und seine "Konkurrenten" beurteilen.

Folgendes ist wichtig: Es geht niemals um die *Sprache*, sondern immer nur um den *Inhalt*. Beispiel: Wenn sich jemand daran macht, einen Roman zu schreiben, und am Ende nur eine einzige Sch*** dabei rauskommt, wird er nicht der deutschen Sprache die Schuld geben dürfen (weil die ja so "kompliziert" oder "inkonsistent" sei), sondern wohl oder übel seinen Fähigkeiten als Autor. Genauso ist es auch in der Softwaretechnik. Die Sprache ist lediglich Werkzeug, die einem die Mittel an die Hand gibt, sein Ziel zu erreichen.

Es ist völlig korrekt, dass PHP viele Fehler verzeiht und durch manche Eigenschaften geradezu dazu verleitet, schlechten Code zu schreiben. Das ist jedoch, streng genommen, keine Schwäche von PHP. Es ist vielmehr eine Schwäche des Entwicklers, wenn er sich von PHP verleiten *lässt*.

Als ich den Auftrag erhielt, eine Groupware auf PHP-Basis zu entwickeln, dachte ich keine Sekunde daran, diese Aufgabe mittels einer prozeduralen Programmstruktur zu lösen. Ich baute von Anfang an auf die OOP von PHP 5. Die Kritik, dass PHPs OOP nicht so weit ausgebaut sei wie diejenige von C++ oder Java, ist zwar von den Fakten her korrekt, sachlich jedoch nicht. PHP 5 stellt absolut ausreichende Mittel zur Verfügung, um eine ordentliche Softwarearchitektur auf die Beine zu stellen. (Das tat übrigens bereits PHP 4.) Diejenigen Sprachkonstrukte aus C++ oder Java, die PHP fehlen, können durch saubere Architektur quasi "nachgebildet" werden.

Obwohl z.B. C ausschließlich prozedurale Programmierung unterstützt, ist es auch dort möglich, einen objektorientieren Ansatz zu wählen. Wie in PHP liegt es auch hier einzig und allein an den Fähigkeiten des Entwicklers, ob er sein Projekt "verhunzt" oder elegant und effizient realisiert. PHP jedenfalls legt dem keine Steine in den Weg.

Manche Eigenschaften von C++ werden von Java kritisiert, weswegen sie dort nicht implementiert sind. Ist das jetzt eine Stärke von Java? Oder eine Schwäche? Und ist C++ deswegen schwach? Oder doch eher stark? -- Diese ganze Fragestellung macht keinen Sinn und ist der Problematik auch nicht angemessen. Es gibt für jeden Bedarf eine Sprache. Anstatt beispielsweise BASIC zu kritisieren (was unangebracht wäre), verwende ich es einfach nicht. Andere Leute hingegen haben sehr gute Verwendung dafür.



kastnermario hat gesagt.:


> Mit PHP kann jeder halbwegs denkfähige Mensch "programmieren".



Diese Idee mutet an wie die Aussage, mit der relativ einfachen Sprache Englisch könne jeder Mensch einen Roman schreiben. Einen schlechten vielleicht, ja. -- Was ich also sagen will: Ganz gleich, welche Sprache man benutzt, ob Python, C++ oder PHP: Es kommt nur dann etwas Vernünftiges dabei heraus, wenn man seine Sache ordentlich macht. Auch in Java kann man haarsträubende Software schreiben. *Architektur* ist das A und O, genauso, wie ein Roman ohne ordentliche Dramaturgie nicht funktioniert.

Von einigen "Freunden" PHPs, deren Kompetenz zweifelhaft ist, wird bisweilen eine "Das kann jeder"-Mentalität verbreitet. Das stimmt nicht. Die Entwicklung einer Software, die Industriestandards erfüllt, erfordert verschiedene Eigenschaften auf Seiten des Entwicklers, vor allem jedoch die Fähigkeit, einerseits bis ins kleinste Detail strukturieren zu können und andererseits dabei den Blick fürs Ganze nicht zu verlieren.

Kein Pinsel der Welt, und sei er noch so professionell, wird einem Maler zu einem besseren Bild verhelfen, wenn der Maler sein Metier nicht beherrscht. In der Hand eines Meisters kann jedoch auch ein primitiver Pinsel Wunder wirken. Der Softwarearchitekt ist ein Künstler, dessen Werkzeuge nur richtig angewandt werden wollen.

Welche Sprache für diese Kunst verwendet wird, ist größtenteils nebensächlich.

-Gawayn


----------



## Christian Kusmanow (6. Dezember 2006)

Gawayn hat gesagt.:


> [...]
> Folgendes ist wichtig: Es geht niemals um die *Sprache*, sondern immer nur um den *Inhalt*. Beispiel: Wenn sich jemand daran macht, einen Roman zu schreiben, und am Ende nur eine einzige Sch*** dabei rauskommt, wird er nicht der deutschen Sprache die Schuld geben dürfen (weil die ja so "kompliziert" oder "inkonsistent" sei), sondern wohl oder übel seinen Fähigkeiten als Autor. Genauso ist es auch in der Softwaretechnik. Die Sprache ist lediglich Werkzeug, die einem die Mittel an die Hand gibt, sein Ziel zu erreichen.
> 
> Es ist völlig korrekt, dass PHP viele Fehler verzeiht und durch manche Eigenschaften geradezu dazu verleitet, schlechten Code zu schreiben. Das ist jedoch, streng genommen, keine Schwäche von PHP. Es ist vielmehr eine Schwäche des Entwicklers, wenn er sich von PHP verleiten *lässt*.
> ...


Ich bin echt beeindruckt von deinem Statement und schließe mich deiner Meinung an. 
Jemand der sich engagiert seinem Beruf widmet und auch alle Grundlagen der Anwendungsentwicklung lernt,
sprich sich nach den heutigen Idiomen des Gewerks richtet, nur der kann von sich behaupten,
dass er in der lage währe in die Desktop-ApplikationsEntwicklung einzusteigen.


----------



## ManicMarble (6. Dezember 2006)

Endlich schreibt einer, was ich mir seit Bestehen dieses Threads denke, bisher aber einfach keine Muse verspürte, es aufzuschreiben. Und so treffend hätte ich's gar nicht formulieren können.

Bravo Gawayn!


----------



## Dennis Wronka (6. Dezember 2006)

Ich kann mich da auch nur anschliessen.
Wie ich, wenn ich mich recht erinnere, auch schon sagte macht es durchaus einen Unterschied wenn man Erfahrung hat oder eben nicht.

Und es kann ja auch jeder Depp Auto fahren, aber nicht jeder sollte.


----------



## ManicMarble (6. Dezember 2006)

Christian Kusmanow hat gesagt.:


> ... nur der kann von sich behaupten,
> dass er in der lage währe in die Desktop-ApplikationsEntwicklung einzusteigen.



Also ich mache beides - Desktop- und Webanwendungen - sehr regelmäßig, beruflich und selbstverständlich auch größere Projekte. Meiner Erfahrung nach ist es erheblich schwieriger und aufwendiger, eine sauber strukturierte Webanwendung zu programmieren (egal mit welcher Sprache) als mit einem halbwegs modernen Tool (wie z.B. den MS "Visuals") eine Desktopanwendung zu entwickeln.


----------



## Christian Kusmanow (6. Dezember 2006)

ManicMarble hat gesagt.:


> Also ich mache beides - Desktop- und Webanwendungen - sehr regelmäßig, beruflich und selbstverständlich auch größere Projekte. Meiner Erfahrung nach ist es erheblich schwieriger und aufwendiger, eine sauber strukturierte Webanwendung zu programmieren (egal mit welcher Sprache) als mit einem halbwegs modernen Tool (wie z.B. den MS "Visuals") eine Desktopanwendung zu entwickeln.


Da man mit dem VS ein sehr mächtiges Werkzeug hat, was einem vieles an Arbeit abnimmt, richtig.
Ansonsten bestreite ich deine Meinung. Der Aufwand ist mindestens gleichwertig.
Ob die Anwendung dann zB wenig Speicher verbraucht und Multithreading verwendet wird, ist dann wieder eine ganz andere Sache.
Btw. hast schon mal Steuerlemente entwickelt? Kein Vergleich oder?


----------



## ManicMarble (6. Dezember 2006)

Steuerelemente habe ich schon entwickelt, ja.
Natürlich kann man schnell und einfach eine dynamische Website (oder auch mehrere) hinrotzen. Das ist aber noch lange keine "Webanwendung". 
Ich finde, das komplizierte an der Web-Programmierung ist das Zusammenspiel von sehr vielen Ebenen: Server-Seite, Datenbank, Client-Seite, Layout, HTML-Formulare, Browser-Kompatibilität, ... alleine schon die sichere Übergabe von Daten von einer Seite zur nächsten ist eine Wissenschaft für sich. 

All diese Probleme gibt's bei der Desktop-Programmierung nicht oder nur in geringem Ausmaß. Man bleibt i.d.R. in einer Sprache. Ok, Hardcore-Coder meinen manchmal immer noch, sie müssten in Assembler abtauchen und wenn man mit Datenbanken arbeitet dann kommt SQL als "Sprache" hinzu - aber alles in allem ist das eine homogene Sache. Ich jedenfalls finde das deutlich einfacher, mache es lieber und bin dabei schneller. Leider sind Webanwendungen derzeit total en-vogue (in gewisser Weise zurecht) und ich darf immer seltener "richtig" programmieren.


----------



## Christian Kusmanow (6. Dezember 2006)

Ich muss sagen, dass ich ein sehr gutes Resume aus den Antworten auf mein ehrlich gesagt sehr progressives [post=1353774]Posting[/post] ziehe.

An Gawayn, Dennis Wronka und ManicMarble solten sich alle PHP-Entwickler ein Beispiel nehmen.

Man sieht das sie ihr Handwerk lieben und dementsprechend alles dafür geben, ihre Anwendungen nach den heutigen Idiomen der Anwendungsentwicklung zu stricken. Sie sehen die Notwendigkeiten die dazu gehören und setzen sich damit intensiv auseinander. Das sind die Vorraussetzungen die man benötigt, auch mit einer weniger standartisierten und gut strukturierten Progammiersprache den heutgen Anfoderdungen der Anwendungsentwicklung zu entsprechen.


----------



## xCondoRx (6. Dezember 2006)

Mamphil hat gesagt.:


> Viel "hässlicher" ist, dass die Zuweisung von Variablen mit einem Gleichheitszeichen geschieht:
> 
> 
> 
> ...


Sobald du das in deinem Code geschrieben hast, entspricht die Variable "a" ja auch dem Wert 1234. Was ist daran jetzt so merkwürdig?


----------



## Mamphil (6. Dezember 2006)

Das merkwürdige ist nun einmal:
Das ist ein Vergleich und keine Zuweisung / Definition. Andersherum: Die Konstrukte if ($a == 1234) { } oder gar if ($a === 1234) { } ist keine mathematisch korrekte Schreibweise.


----------



## ManicMarble (6. Dezember 2006)

Leute, ihr streitet euch um Kaisers Bart.

Was soll denn das? In manchen Sprachen ist = der Vergleich und die Zuweisung was anderes, in anderen ist = die Zuweisung und der Vergleich sieht anders aus und in wieder anderen Sprachen ist = einfach beides. Ja und? In deutsch heißt es "gleich" und in englisch "equals". Is halt so, kann man drüber schimpfen, ändert aber auch nichts.

Schönheit oder Hässlichkeit spielt dabei überhaupt keine Rolle, wichtig ist einzig und allein, dass der Programmierer weiß, in welcher Sprache er grade schreibt... - und das kann manchmal tatsächlich das Problem sein, wenn man oft "multilingual" arbeiten muss.

Aber wenn ihr Spaß am Kleinkrieg um Spitzfindigkeiten habt, dann will ich euch den nicht verderben.


----------



## Christian Kusmanow (6. Dezember 2006)

ManicMarble hat gesagt.:


> All diese Probleme gibt's bei der Desktop-Programmierung nicht oder nur in geringem Ausmaß. Man bleibt i.d.R. in einer Sprache. Ok, Hardcore-Coder meinen manchmal immer noch, sie müssten in Assembler abtauchen und wenn man mit Datenbanken arbeitet dann kommt SQL als "Sprache" hinzu - aber alles in allem ist das eine homogene Sache. Ich jedenfalls finde das deutlich einfacher, mache es lieber und bin dabei schneller. Leider sind Webanwendungen derzeit total en-vogue (in gewisser Weise zurecht) und ich darf immer seltener "richtig" programmieren.


Dazu möchte ich noch etwas sagen.
Ich finde man hat mindestens genauso viel Hürden in der Cliententwicklung zu bewältigen.
Aber diese Hürden unterscheiden sich ungemein von denen, die Du erwähnt hast. Da wir hier aber von Web-Design reden, denke ich, dass das hier nicht weiter erörtert werden brauch. Ein paar elementare Sachen habe ich ja schon erwähnt. Sicherlich wird jeder, der schon mit beiden Dingen in berührung gekommen ist, wissen wovon ich rede.


----------



## Mark (6. Dezember 2006)

Hi!

Als "Gelegenheits-Programmierer" sollte ich eigentlich die Bappen halten, aber eine Anmerkung bzgl. der wunderbaren Vergleiche (im wirklich pipifeinen Beitrag) von Gawayn, erlaube ich mir  ...geht die Diskussion ja mittlerweile in eine globale Richtung: ähnliche Diskussionen könnten man z.B. bzgl. 3D-Software führen... 



Gawayn hat gesagt.:


> Folgendes ist wichtig: Es geht niemals um die *Sprache*, sondern immer nur um den *Inhalt*. Beispiel: Wenn sich jemand daran macht, einen Roman zu schreiben, und am Ende nur eine einzige Sch*** dabei rauskommt, wird er nicht der deutschen Sprache die Schuld geben dürfen (weil die ja so "kompliziert" oder "inkonsistent" sei), sondern wohl oder übel seinen Fähigkeiten als Autor. Genauso ist es auch in der Softwaretechnik. Die Sprache ist lediglich Werkzeug, die einem die Mittel an die Hand gibt, sein Ziel zu erreichen.


...gerade die Rechtschreib-Reformen zeigen aber doch, daß auch hier eine Diskussion "angebracht scheint". Und wenn ich mir den heutigen MTV-Slang anhöre und nichts mehr verstehe, wäre ich tatsächlich froh, wenn diese "konsistenter" wäre 
Auch ein "guter Autor" freut sich sicher über exakte Verben, eine klare Grammatik u.ä. wenn er's auch "ohne" schaffen könnt' 


> Kein Pinsel der Welt, und sei er noch so professionell, wird einem Maler zu einem besseren Bild verhelfen, wenn der Maler sein Metier nicht beherrscht. In der Hand eines Meisters kann jedoch auch ein primitiver Pinsel Wunder wirken.


*g* ziemlich ähnliches findet sich tatsächlich im 3D-Programm-Forum 
Aber: ein Meister wird auch mit einem "guten Pinsel" keine "schlechteren Bilder" malen... Und so kann auch er evtl. statt den "schlechten Pinsel" durch "Können" oder "Mehraufwand" zu kompensieren, effizienter arbeiten...
Nur, weil also eine "defizitäre Software" dennoch von "Meistern" beherrscht werden kann, sollte dennoch Kritisiert und Weiterentwickelt werden, sonst säßen heut' noch alle vor der Maschinen-Sprache ... ein "Meister" kann damit ja arbeiten 

Lange Rede, kurzer Sinn: auch, wenn ein Stück Kohle zum Schreiben reicht, ist mir ein High-Tech-Kulli dennoch lieber 

Liebe Grüße,
Mark.


----------



## fireblade1282 (9. Dezember 2006)

Ich habe nicht alle 110 Beiträge glesen, aber meinen Senf geb ich jetzt auch mal ab...
Diskussionen die in die Richtung "richtige Programmiersprache" gehen zeugen davon, dass man voreingenommen ist oder ohne keine Ahnung hat... Jeder der schon lange dabei ist weiss dass es nur das falsche Projekt zu richtigen Programmiersprache gibt - aber das nur am Rande, denn die ursprüngliche Frage verglich "leistungsähnliche" Sprachen, deshalb schreibe ich überhaupt, denn da ist soeine Fragestellung gerechtfertigt 

Meine Meinung: PHP ist wirklich inkonsistent was die Funktionsbenennung angeht, aber sobald man mehr als 5 "Sprachen spricht" wird man eh zum "Referenzprogrammierer"...
Wer die Entwicklung von "Homepagetools" zu PHP5 wirklich verfolgt hat weiss wie die Sprache hingelitten wurde zu dem was sie ist..  Java ist halt in einem Labor entstanden, C an Universitäten... das merkt man. "Hässlich" ist allerdings das falsche Wort.

Sie IST leicht zu lernen und JA sie ist ebenso gefährlich. Ich denke sie ist für Anfänger geeignet zu lernen. Für Amateure gehört sie verboten (in diesem Stadium sollte kein PHP Projekt ins Netz gestellt werden dürfen.. da musses Gesetze gegen geben  ). Und für Profiprogrammierer ist sie wieder Saugeil...  Ordentlichen Code lebt man! Das geht in jeder Sprache. Und das Verständnis für eine Funktion wird beim Lesen nicht gestört ob ein "i" vor, hinter oder ohne underscore steht  *bezug_2_threadanfang*

Beispiel: Die oft verschipften varianten Datentypen in Verbindung mit den identisch Operatoren sind durchaus handhabbar wenn ein Programmierer wirklich versteht was abgeht und was implizite Typkonversionen in anderen Sprachen sind sind usw.. deshalb mein Fazit:

PHP für Anfänger und Profis auf dem Weg dazwischen viel Tutorials(.de) lesen!


----------



## kastnermario (10. Dezember 2006)

Ok. Ich hab mich wohl ein wenig unverständlich ausgedrückt mit meiner Aussage das jeder halbwegs denkende Mensch mit PHP Programmieren kann. 

Ich muss euch völlig recht geben. Wie der Code aussieht hat aber nichts mit der Sprache zu tun sondern mit dem Willen des Entwicklers. Es kann doch nicht sein das einer Programmiersprache schlampiger Stil oder "verleitet zumindest dazu" vorgeworfen wird. 

Ich schätze mal Ihr plant eure Projekte bis ins tiefste Detail. Baut UML Diagramme haltet dutzende Meetings ab, schreibt Pflichten und Lastenheft und im endeffekt merkt Ihr es sind Monate vergangen und noch keine Zeile Code ist geschrieben. Ist ja auch nicht schlimm! 

Schade finde ich es nur das PHP zu etwas gemacht werden soll was es nicht ist. Kompliziert. Es wird über zuweisungen diskutiert, typisierungen usw. Nichts für ungut. Vor zwei Jahren wusste ich nicht mal was "typisierung" überhaupt bedeutet. Heute weis ich es. Und? Bringt mir das was? Nö. Gar nix! Ich tu mir weder leichter beim Programmieren noch trägt die lasche typisierung irgendwas bei. 

Frage: Wenn Ihr UML, und Brainstorming Diagramme  malt, warum könnt Ihr dann nicht nachvollziehen welche Zustände eine Variable an nimmt. Jeder benutzt Debugger. Zumindest behaupten es viele. Nun. Bei den meisten Debuggern wie den Zend Debugger kann man Variablen beobachten. Es wird nicht nur der Wert sondern auch der Typ angezeigt. Für die Nachverfolgung kann man ja Breakpoints setzten. Also so schwer ist das auch nicht. 

Ok. Ich rede sehr allgemein. Aber was solls. Was mich stört an PHP sind nur die laschen Fehlermeldungen wo ja auch wirklich hebräisches darunter ist. Wie die Fehlermeldung wenn man eine Methode statisch aufruft und PHP dies nicht zulässt.  


```
$objStat::__construct();
```

Da kommt dann die Fehlermeldung:


```
...T_PAAMAYIM_NEKUDOTAYIM...
```

Das ist aber auch schon das einzige was mich wirklich stört.

Es ist halt eine gewisse Herrausforderung solche Sachen zu enträtseln. Aber gut. Ich denke jede Sprache hat da so ihre Macken. ;-] 

Das tolle an PHP wiederum ist die Community. PEAR, PECL, PHPCLASSES.org usw. tragen extrem zur arbeiterleichterung bei. 

.Net hat sein Framework, Perl hat das PCRE usw.


----------



## kastnermario (10. Dezember 2006)

Mamphil hat gesagt.:


> Das merkwürdige ist nun einmal:
> Das ist ein Vergleich und keine Zuweisung / Definition. Andersherum: Die Konstrukte if ($a == 1234) { } oder gar if ($a === 1234) { } ist keine mathematisch korrekte Schreibweise.


PHP ist ja auch nicht für Mathe entwickelt worden. Ob das nun ein "Mathematisch inkorrekter" Ausdruck ist, ist glaub ich jedem mal egal. Ich will ja auch keine Formel schreiben sondern ein Programm. Die Zeiten des Assemblers sind vorbei. 

PS: Gott sei Dank hat PHP nichts mit Mathe zu tun! Ich hatte in Mathe ne 4! Ich glaube eher Programmiersprachen haben was mit Logik zu tun. Und die ist bekanntlich ja unterschiedlich aufzufassen.


----------



## mAu (10. Dezember 2006)

Um mal auf die uneinheitliche Funktionsbenennung bei PHP zu sprechen zu kommen... Eine Sprache (Deutsch, Englisch, Portugiesisch etc.) hat doch auch unregelmäßige Verben und so...  Schlechter Vergleich, ich weiß... Aber ich kann damit Leben. Ich hab mir mal Phyton angeschaut, aber hab nach kurzer Zeit wieder aufgegeben, weil ich erstens zu wenig Informationen (Tutorials, Einführungen etc.) im Netz gefunden hab (und deutsche Bücher in Brasilien kaufen doch recht teuer ist ) und zweitens die "Erfolge" nicht gleich so sichtbar wie in PHP.


----------



## Christian Kusmanow (11. Dezember 2006)

kastnermario hat gesagt.:


> Ich muss euch völlig recht geben. Wie der Code aussieht hat aber nichts mit der Sprache zu tun sondern mit dem Willen des Entwicklers. Es kann doch nicht sein das einer Programmiersprache schlampiger Stil oder "verleitet zumindest dazu" vorgeworfen wird.


Natürlich tut es das. PHP ist ja in aller Munde als Anfängersprache. Und daher denken viele "fang ich gleich mal damit an". Daher kann man sich ausmalen, dass viele die die Sache so angehen, keinelei grundlegendes Wissen zu den Paradigmen der heutigen Anwendungsentwicklung haben. Das meinte ich mit


			
				cosmo hat gesagt.:
			
		

> Wir wollen aus der Softwarekriese herraus und nicht wieder hinein.


Ich hoffe Du verstehst meine Intension in dem Zusammenhang und weisst, was ich mit Softwarekriese gemeint habe.
Jemand der an einer richtigen Sprache gelernt hat, weiss was er tut. Weil er sich erstens vorstellen kann, was hinter einem Script eigentlich passiert. Und zweitens, bereitet er sich entsprechend auf seine Arbeit entsprechend vor, damit während der Entwicklung keine Änderungen (zumindest keine schwerwiegenden) vorgenommen werden müssen, die den Code inkonsistent sprich fehler-anfälliger machen.



kastnermario hat gesagt.:


> Ich schätze mal Ihr plant eure Projekte bis ins tiefste Detail. Baut UML Diagramme haltet dutzende Meetings ab, schreibt Pflichten und Lastenheft und im endeffekt merkt Ihr es sind Monate vergangen und noch keine Zeile Code ist geschrieben. Ist ja auch nicht schlimm!


Warum sollte es das sein? 



kastnermario hat gesagt.:


> Schade finde ich es nur das PHP zu etwas gemacht werden soll was es nicht ist. Kompliziert. Es wird über zuweisungen diskutiert, typisierungen usw. Nichts für ungut. Vor zwei Jahren wusste ich nicht mal was "typisierung" überhaupt bedeutet. Heute weis ich es. Und? Bringt mir das was? Nö. Gar nix! Ich tu mir weder leichter beim Programmieren noch trägt die lasche typisierung irgendwas bei.


Meine Argumentation bezog sich auf die Desktopentwicklung. Ich kann mir beim besten willen nicht vorstellen, dass das was bei PHP intern passiert, wenn man ohne typisierung arbeitet, die Resourcen eines Clientsystems nicht sprengen würde. Ausserdem wird der Code zudem scheller, da PHP bei jedem Aufruf nicht aufschlüsseln muss, wie das Objekt intern verwaltet werden muss. Das meinte ich mit 





			
				cosmo hat gesagt.:
			
		

> Jemand der an einer richtigen Sprache gelernt hat, weiss was er tut, weil er sich erstens vorstellen kann, was hinter einem Script eigentlich passiert.


Dann gibt es noch solche Experten die Variablen innerhalb von wiederkehrenden Durchläufen (Schleifen etc) deklarieren. Um nur mal eine weiteres Beispiel zu nennen.



kastnermario hat gesagt.:


> Frage: Wenn Ihr UML, und Brainstorming Diagramme malt, warum könnt Ihr dann nicht nachvollziehen welche Zustände eine Variable an nimmt.


Versteh ich deine Aussage jetzt richtig? Wenn wir das nicht könnten, wurden wir nicht in Firmen sitzen und damit Geld verdienen. Oder wolltest doch was anderes fragen? 



			
				fireblade1282 hat gesagt.:
			
		

> PHP für Anfänger und Profis auf dem Weg dazwischen viel Tutorials(.de) lesen!


Aber vorher schön fleißig alle Grundlagen studieren. Dann gehts zudem auch viel viel schneller vorran 

@New Post: Bitte erst den gesamten Thread durchlesen.


----------



## Gumbo (11. Dezember 2006)

PHP ist nun mal eine Sprache, in die man einen schnellen Einstieg hat. Man lädt einfach das XAMPP-Paket herunter, entpackt es und schon kann es los gehen. Das „Hallo Welt“ hat man dann schon während des Entpackens fertiggeschrieben. Auch mit den Kontrollstrukturen hat man sich schnell angefreundet und der Umgang mit Variablen ist auch ein Kinderspiel, da man allen Bezeichnern ja noch immer Zahlen anhängen kann. Die Erfolgskurve scheint also geradewegs nach oben zu zeigen.
Nun hat man so viel gelernt, dass man meint, man könne sich an etwas Größeres trauen, typischerweise ein Nachrichtensystem oder ein Gästebuch. Der Umgang mit einer Datenbank ist auch schnell gelernt, dafür gibt es ja genügend (schlechte!) Tutorials, aus denen man den Quellcode kopieren kann. Und schon hat man auch sein einfaches Nachrichtensystem oder Gästebuch fertig.
Der nächste logische Schritt wäre (wieder) typischerweise ein Forum oder eine Community. Auch hierzu gibt es genügend Tutorials, aus denen man sich bedienen kann. Und schon hat man auch sein Forum oder seine Community zusammengefrickelt. Man kann sich jetzt also selbst ein PHP-Profi nennen.

Was dabei allerdings auf der Strecke bleibt, da dies mehr Denkarbeit erfordert, sind Themen wie Sicherheit, Datenschutz, Interoperabilität, Kompatibilität oder die Effizienz der Anwendung. Damit wird sich meist erst beschäftigt, wenn es zu spät ist, wenn das Gästebuch oder Forum mit Spam zugemüllt ist, der Webserver gehackt oder das ganze System durch Überlastung zusammenbricht.

Klar, das sind nicht nur Probleme, die PHP betreffen. Doch PHP bietet aufgrund des so schnellen Einstiegs leider ein gutes Fundament dafür sich um diese Themen erst gar keine Gedanken zu machen. Schließlich funktioniert das Skript! Und darauf kommt es doch nur an.


----------



## kastnermario (11. Dezember 2006)

Christian Kusmanow hat gesagt.:


> Meine Argumentation bezog sich auf die Desktopentwicklung. Ich kann mir beim besten willen nicht vorstellen, dass das was bei PHP intern passiert, wenn man ohne typisierung arbeitet, die Resourcen eines Clientsystems nicht sprengen würde. Ausserdem wird der Code zudem scheller, da PHP bei jedem Aufruf nicht aufschlüsseln muss, wie das Objekt intern verwaltet werden muss.



Was hinter dem PHP Parser geschieht ist mir oft selbst ein Rätsel.  Ich programmiere nun hauptberuflich schon seit ein paar Jahren und es wundert mich immer was so als Ergebniss einer Klasseninitialisierung rauskommt. Aber egal. Auch in PHP hat man Normen an die man sich halten muss, da man sonst ganz schnell zum aussetzigen wird in der Community. Ich erinnere mich mit Schrecken über ein Voting bei PEAR. Da wurde doch glatt die Aufnahme ins Repo verweigert nur weil der Entwickler eine geschwungene Klammer an der Falschen stelle gesetzt hat. Mein Gott. Das war ein schlachtfest. Beschimpfungen des Entwicklers waren da noch das kleinere Übel. Man sieht: Heutzutage wird alles genormt. Sogar wieviele Tabstops erlaubt sind. Einer zuviel und du wirst als schlechter Programmierer dein Leben lang gebrandmarkt.


----------



## Dennis Wronka (11. Dezember 2006)

kastnermario hat gesagt.:


> Das war ein schlachtfest. Beschimpfungen des Entwicklers waren da noch das kleinere Übel.


Das erinnert mich ein wenig an die Diskussionen zu Reiser4 auf der Linux-Kernel Mailingliste.  Hans Reiser scheint naemlich auch nicht der umgaenglichste aller Zeitgenossen zu sein und hat sich mit so einigen Kommentaren unter den Kernel-Entwicklern und Maintainern ein paar "richtig gute Freunde" gemacht.


----------



## kastnermario (13. Dezember 2006)

Dennis Wronka hat gesagt.:


> Das erinnert mich ein wenig an die Diskussionen zu Reiser4 auf der Linux-Kernel Mailingliste.  Hans Reiser scheint naemlich auch nicht der umgaenglichste aller Zeitgenossen zu sein und hat sich mit so einigen Kommentaren unter den Kernel-Entwicklern und Maintainern ein paar "richtig gute Freunde" gemacht.



Das ist dann wohl auch der Grund warum selbst die soooooo beliebte Suse bei der Installation von damals StandardmÃ¤ÃŸig ReiserFS auf ext3 umgestiegen ist. Tja. Da kann das Produkt noch so gut sein. Wenn es sich der Entwickler verscherzt kann das Produkt noch so gut sein. Find ich irgendwie super.


----------



## Dennis Wronka (13. Dezember 2006)

Auch wenn das Ganze jetzt etwas abdriftet, aber ich denke zum Thema wurde eh bereits alles Noetige gesagt, ReiserFS 3 ist ja im offiziellen Kernel drin, aber Reiser4 laesst halt noch etwas auf sich warten.
ReiserFS (also Version 3) ist im Grunde kein schlechtes Dateisystem, meiner Meinung nach. Ich selbst nutze ext3 und ueberlege ob ich nicht auf ext4 "upgraden" soll.
Auch Reiser4 scheint ein wirklich gutes Dateisystem zu sein. Ich hatte mal was dazu gelesen und das hoerte sich halt alles ganz gut an. Aber es ist nicht verwunderlich, dass sich einige Kernel-Entwickler quer stellen wenn Namesys es eben nicht fuer noetig haelt die Kernel-Coding-Conventions zu befolgen und Hans Reiser dann auch noch gross rumtoent. Ein Kritikpunkt ist wohl auch, dass der Support fuer ReiserFS 3 wohl relativ schnell nach Aufnahme in den offiziellen Kernel eingestellt wurde und dann wohl nur noch fuer Reiser4 entwickelt wurde.


----------



## Julian Maicher (24. Dezember 2006)

Muss mal ganz kurz was loswerden: *Django* rockt!


----------



## venyl (24. Dezember 2006)

suye hat gesagt.:


> Muss mal ganz kurz was loswerden: *Django* rockt!



War das mit Python oder Perl`?


----------



## daddz (24. Dezember 2006)

Mit Python! Siehe hier.

greetz
daddz


----------



## Thomas Darimont (24. Dezember 2006)

Hallo,

Django ist ne feine Sache (verwende ich selbst). Das Problem was jedoch Django, Ruby on Rails & PHP basierten Frameworks anhaftet ist das umständliche debugging. Bis auf wenige Ausnahmen ist man dabei nämlich auf "printf"-Debugging angewiesen... (oder man interagiert mit den dynamischen Sprachen direkt über eine spezielle Debugkonsole... auch nicht "viel" besser) und das ist IMHO vor allem in großen komplexen System ein Produktivitätskiller.

Gruß Tom


----------



## pamax (24. Dezember 2006)

ASP.NET rockt viel mehr 
Ich muss sagen, dass ist echt eine feine Sache!Vorallem jetzt noch mit den Ajax-Erweiterungen.

pMx


----------



## Julian Maicher (24. Dezember 2006)

> Hallo,
> 
> Django ist ne feine Sache (verwende ich selbst). Das Problem was jedoch Django, Ruby on Rails & PHP basierten Frameworks anhaftet ist das umständliche debugging. Bis auf wenige Ausnahmen ist man dabei nämlich auf "printf"-Debugging angewiesen... (oder man interagiert mit den dynamischen Sprachen direkt über eine spezielle Debugkonsole... auch nicht "viel" besser) und das ist IMHO vor allem in großen komplexen System ein Produktivitätskiller.
> 
> Gruß Tom


Hmm, bislang ist noch alles sehr überschaubar .. bald wage ich mich an eine komplexere Webapplikation, mal sehen wie ich dann damit klar komme.
Schlimmer als mit PHP kann es nicht werden 


> ASP.NET rockt viel mehr
> Ich muss sagen, dass ist echt eine feine Sache!Vorallem jetzt noch mit den Ajax-Erweiterungen.


Auch eine feine Sache .. gibts denn mittlerweile irgendeine Lösung für das lästige Server Problem? Habe damals auch einige Sachen in ASP.NET entwickelt, aber das Hosting hat kein Spaß gemacht (ISS + SQL-Datenbank -> i.d.R. teuer und rar).


----------



## pamax (24. Dezember 2006)

suye hat gesagt.:


> Auch eine feine Sache .. gibts denn mittlerweile irgendeine Lösung für das lästige Server Problem? Habe damals auch einige Sachen in ASP.NET entwickelt, aber das Hosting hat kein Spaß gemacht (ISS + SQL-Datenbank -> i.d.R. teuer und rar).



Microsoft.com ist die 5. meist besuchte Website, wenn die Performance schlecht wäre...^^ PHP ist schneller als ASP.NET aber PHP ist eine Scriptsprache und keine Programmiersprache. Und mal schauen was ASP.NET 3.0 bringt.



suye hat gesagt.:


> Habe damals auch einige Sachen in ASP.NET entwickelt, aber das Hosting hat kein Spaß gemacht (ISS + SQL-Datenbank -> i.d.R. teuer und rar).



Das ist ein Problem, aber ich denke das wird sich in ein paar Jahren ändern. Da die .Net Technologie im kommen ist. Mit dem erscheinen von  Windows Server 2007/2008 wird sich da hoffentlich was ändern...*hoff*

pMx


----------



## Matthias Reitinger (24. Dezember 2006)

Hallo,



Thomas Darimont hat gesagt.:


> Django ist ne feine Sache (verwende ich selbst). Das Problem was jedoch Django, Ruby on Rails & PHP basierten Frameworks anhaftet ist das umständliche debugging. Bis auf wenige Ausnahmen ist man dabei nämlich auf "printf"-Debugging angewiesen... (oder man interagiert mit den dynamischen Sprachen direkt über eine spezielle Debugkonsole... auch nicht "viel" besser) und das ist IMHO vor allem in großen komplexen System ein Produktivitätskiller.


Das kann ich zumindest bei Ruby on Rails nicht so ganz nachvollziehen. Tritt ein Fehler auf und wird eine entsprechende Ausnahme geworfen, kriegt man im Entwicklermodus doch eine ausführliche Meldung angezeigt – inklusive Stacktrace. Wem das noch nicht genügt, der kann mit der passenden IDE auch Schritt für Schritt debuggen (klappt z.B. mit RadRails ganz gut). Was will man eigentlich noch mehr? 

Grüße,
Matthias


----------



## Thomas Darimont (24. Dezember 2006)

Hallo,



> Das kann ich zumindest bei Ruby on Rails nicht so ganz nachvollziehen. Tritt ein Fehler auf und wird eine entsprechende Ausnahme geworfen, kriegt man im Entwicklermodus doch eine ausführliche Meldung angezeigt – inklusive Stacktrace. Wem das noch nicht genügt, der kann mit der passenden IDE auch Schritt für Schritt debuggen (klappt z.B. mit RadRails ganz gut). Was will man eigentlich noch mehr?


Für Ruby on Rails gibts richtigen (IDE unterstützten) Debug Support erst seit kurzem. Unter "richtigem" Debugging verstehe
ich das "online" Debuggen von Code. Breakpoints definieren (Sowohl zur Entwicklungs- als auch zur Laufzeit),
Variablen Inspizieren, Variablen Werte austauschen im Debugger ändern, Step-into, Step-Over, Step-out Ablaufsteuerung, Codeänderungen während des debuggens bzw. während der Codeausführung (um schnell einen kleinen Fehler zu fixen ohne das System
wieder neu bootstrappen zu müssen)... all das ist auch mit den aktuellen Versionen der entsprechenden IDE's PyDEV für Python/Django, Radrails mit RDT für Ruby und PHPclipse für PHP (u.a. wegen noch nicht ganz ausgereifter Plugins) noch nicht so ohne weiteres möglich, aber das ist sicherlich nur eine Frage der Zeit ;-)

Hier noch ein interessanter Artikel wie man mit RadRails Ruby on Rails Anwendungen debuggen kann:
http://www.misuse.org/cms/article.php?story=20060913182223765
und hier einer zur Ruby Entwicklung mit dem RDT:
http://www-128.ibm.com/developerworks/opensource/library/os-rubyeclipse/

Gruß Tom


----------

