Citat:
Ursprungligen postat av ITisGood.se
(Inlägg 20472436)
Det är inte så många fel som kan härledas till felaktig datatyp. Det är sällan det spelar någon roll om siffran du skickar in i en funktion är en string eller en integer. Typkonverteringen sker nästan alltid automatiskt när det behövs. Vill du specifikt typa en variabel är det väldigt lätt att göra.
|
Det är över 90% av alla fel man gör vid programmering som är enkla skrivfel så man sätter fel namn på en variabel eller annan identifierare. Använder man en kompilator för ett starkt typat språk upptäcks det redan när man gör sin första kompilering. Det är mycket viktigt att upptäcka felen så tidigt som möjligt.
Citat:
Ursprungligen postat av ITisGood.se
(Inlägg 20472436)
Enligt mig en väldigt effektiv produktivitetsdödare. Jag vill kunna testa min kod sekunden efter att jag tryckt spara. Jag vill inte behöva vänta på att kompilatorn ska göra sitt. Hur underlättar kompilering för modulariteten?
|
Kompilering tar bara någon sekund och när jag exempelvis jobbar med Visual studio med C# så trycker jag på [F6] för att spara och kompilera eller [F5] för att först spara och kompilera och sedan köra programmet i ett svep.
Citat:
Ursprungligen postat av ITisGood.se
(Inlägg 20472436)
Finns väldigt bra stöd för objektorienterad sedan PHP 5.3 och den blir bättre och bättre för varje version. Det finns i dagsläget få brister när det gäller det här jämfört med Java eller C#.
|
Stödet för Objektorientering är uselt i den senaste PHP 5.3.0 som jag kör, stödet har iofs blivit bättre men det är 20 år efter övriga ledande språk på markanden.
Citat:
Ursprungligen postat av ITisGood.se
(Inlägg 20472436)
Vet inte riktigt vad du syftar på här. Det finns inga begränsningar när det gäller återanvändning av kod varse sig du använder imperativ eller objektorienterad kod. För att flytta kod använder man "cut and paste" oavsett språk eller plattform.
Det finns däremot andra områden där det finns viss förbättringspotential när det gäller PHP, men jag tycker inte alls du träffar rätt här.
|
"Cut and paste" räknas inte som återanvändning. Återanvändning är när du har en färdig modul i exempelvis filer som *.DLL, *.LIB, eller *.SO där källkoden är färdigkompilerad och testad och att man kan lita på det. Då kan man återanvända koden genom "anrop" och genom att "ärva", "instantiera" eller dyligt.
Det finns visserligen PECL för att skapa nya utökningar i PHP som jag ännu inte kört. Jag tyckte dock det var knepigt att förstå hur det var uppbyggt, men jag ska kolla vidare på det.
Jag tycker det borde finnas en möjlighet att kompilera till endera till MSIL eller Java Byte-kod eller motsvarande "PHP bytekod/ILkod" alternativt till ren maskinkod för att skapa motsvarigheten till *.DLL, *.LIB eller *.SO filer.
Idag behöver jag kopiera källkoden för att kunna återanvända koden, eller använda "include". Vilket är sämre varianter av "återanvändning".
Jag tycker det är viktigt att det finns denna möjlighet att använda externa tredjepartbibliotek som lätt kan användas vid behov, utan att för den skulll tynga ner "kärnan" av språket/interpretern/kompilatorn.
Dessa externa återanvändbara komponenter är en av de viktigaste delarna vid återanvändning, eller komponenttänkandet.
Citat:
Ursprungligen postat av ITisGood.se
(Inlägg 20472436)
Det här är inte ett problem. Det är bara att använda en OP Code Cache som t.ex. APC, XCache eller eAccelerator för att den kompilerade koden ska cachas. Prestandaskilnaden är i stort sett obefintlig om man konfigurerar rätt.
|
Scriptspråk är i sig sega då de "by definition" är interpreterande och inte kompilerade, så det är i sig ett problem som är så stort att man normalt väljer andra programspråk för att bygga kommersiella applikationer.
Sammanfattningsvis så ser jag några viktiga saker som jag anser PHP måste blir betydligt bättre på:
- Stark typning med möjlighet att ställa in "strict type mode" som man införde i VB när det gick från att vara ett löst typat till starkt typat språk
- Kompilerande (Semi- till intermediate/bytekod eller native)
- Mer komponenttänkande med exempelvis: DLL-, LIB-, eller SO-filer som kan länkas ihop med applikationen
- Mer renodlat objektorienterad språkstruktur
En strategi för att komma närmare detta mål är att helt enkelt renodla/kraftsamla språket så det följer dessa grundläggande principer och låta communityt utveckla komponenter för specifika ändamål.
Som jag upplever det nu så verkar kommunityn behöva spendera mycket tid på att lösa grundläggande problem i språket, i stället för att tillföra nytt värde.
Smart tror jag vore om man väljer att kunna kompilera för MSIL och/eller JavaBytekod så att man underlättar integration med dessa miljöer, så får man automatiskt ett rejält boost i integrationsfrågor med dessa miljöer.