webForumDet fria alternativet

Skriptspråk eller serverspråk?

17 svar · 868 visningar · startad av jerk

jerkMedlem sedan okt. 20033 inlägg
#1

Hejsan,

Kan någon av er kompetenta webbrävar hjälpa oss med denna för er enkla fråga...

Vi försöker ta reda på skillnaden mellan php och perl.
Är perl ett skriptspråk eller serverspråk?

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Det finns nog mycket att säga beroende på från vilket perspektiv man ser det och vilka skillnader man syftar på. Syntax, användningsområden, etc. PHP - Hypertext Preprocessor är väl egentligen som namnet antyder framtaget för webbruk meddans Perl (Practical Extraction and Report Language) är ett mer generellt verktyg, även om det blivit mer känt tillsammans med CGI. Därför kan man väl säga att php är ett serverspråk meddans perl kan vara ett, var man nu lägger meningen i det. Båda språken är interpreterande och kan kallas scriptspråk. I websammanhang kan båda scriptspråken användas tillsammans med CGI för ett kommunicera med (web)servern, men ofta används egna API'er (modperl, modphp, perl for isapi etc.)

Som vanligt kan man göra "en enkel fråga" rätt komplex :)

Välkommen till wF förresten.

spangoMedlem sedan juni 20008 205 inlägg
#3

Re: Skriptspråk eller serverspråk?

För att sammanfatat Jojjoxx kompetenta svar:

jerk skrev:

Är perl ett skriptspråk eller serverspråk?

Ja.

RobbanMedlem sedan dec. 19992 555 inlägg
#4

Ja.

Skriptspråk -- ja. Och ett mycket kompetent sådant.

Serverspråk -- nej. Visst kan Perl köras på en server och som CGI-skript. Det kan program skrivna i C också. Men det gör varken Perl eller C till serverspråk. Perl är ett allmänt språk som används på många andra stället än på webbservrar.

Perl har kanske blivit känt som ett CGI-språk bland "allmänheten", men de som verkligen håller på med språket seriöst vet att CGI bara är en liten del av de som Perl kan användas (och används) till.

Ett par exempel på senare större Perl-projekt jag jobbat med:

* En samling skript som läser in ett stort antal loggfiler från telekom-produkter och sammanställer resultatet i Excellark och grafer (handlar om att ta fram statistik om nertid, orsaker till nertid, m.m.).

* Skript för att flytta ett stort antal (fler än 10000) poster från en databas till en annan, tabellstruktur och tabellfält ändrats (och datat följdaktligen måste formateras och struktureras om för att passa in i den nya databasen). I samband med detta skulle flera tusen filer som var länkade till den gamla databasen, struktureras om, döpas om och sättas in på rätt plats i den nya strukturen.

Perl används mycket inom administration och R&D. Främst för att det går snabbt att utveckla i. Inom R&D behöver man ofta snabbt fixa fram en lösning där dessutom livslängden på applikationen ofta är relativt kort, och då blir utvecklingstiden en mycket viktig faktor. Man tar ofta fram en applikation som skall lösa ett specifikt jobb, för att sedan kanske aldrig användas mer.

jerkMedlem sedan okt. 20033 inlägg
#5

Tack för era svar.

En annan sak som vi funderarar över är vad cgi egentligen gör. Varför ser man olika scriptexempel med ändelserna .cgi och .pl?
Som vi uppfattat det är cgi ett program för att tolka perl-kod och därför förstår inte vi varför dessa script avslutas med .cgi. Som ni säkert förstår har vi fått i uppgift att jämföra dessa. Tack på förhand.

spangoMedlem sedan juni 20008 205 inlägg
#6

Det har att göra med att webbvärlden är ganska Unix-centrerad i sin terminologi. Filändelsen .cgi används (för att göra en lång historia kort) för att meddela servern att "den här filen är ett helt vanligt körbart program (typ), om användaren begär den ska den exekveras och inte bara hivas över". Webbservern försöker således be operativsystemet att köra programmet, och skickar tillbaka utdatan som programmet ger.

Nu är det så att "program" (eg. körbara filer) i Unix inte behöver vara kompilerade, de kan vara okompilerade och ha en shebang med sökvägen till tolken först (i Perls fall vanligen något i stil med #!/usr/bin/perl). När OS:et får i uppgift att köra filen, upptäcker den att det är en okompilerad fil, och letar upp tolken och kör igång.

Således används .cgi för att markera CGI-script i såväl okompilerade som kompilerade språk. En .cgi-fil kan vara ett Perlscript, ett C-program eller liknande.

Filändelsen .pl är den som typiskt används för Perlscript när de inte körs som CGI, d.v.s. som t.ex. vanliga program i en Unixmiljö eller liknande.

RobbanMedlem sedan dec. 19992 555 inlägg
#7

Man skulle kunna ha vilken filändelse man vill (UNIX använder inte filändelser på samma sätt som Windows gör). Både .cgi och .pl används för Perl-skript. Beror helt och hållet på webbserveradministratörens tycke, smak och läggning (man kan konfigurera webbservern att hantera filer med filändelsen .surströmming som Perl-skript, om man vill).

Som vi uppfattat det är cgi ett program för att tolka perl-kod ...

CGI är en standard som används när en webbserver skall prata med en applikation skriven i vilket språk som helst. CGI beskriver ett "språk" (interface) som både webbservern och applikationen (som kan vara skriven i Perl, C, C++ eller i stort sett vilket annat språk som helst) måste förstå.

http://hoohoo.ncsa.uiuc.edu/cgi/intro.html

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#8

Re: Skriptspråk eller serverspråk?

jerk skrev:

Hejsan,

Kan någon av er kompetenta webbrävar hjälpa oss med denna för er enkla fråga...

Vi försöker ta reda på skillnaden mellan php och perl.
Är perl ett skriptspråk eller serverspråk?

Enligt mig så vill jag nästan placera Perl och PHP under samma tak. För med både perl och php så kan man som du redan vet skapa olika webbapplikationer, som är speciellt framtagna för att arbeta på en server.

::PERL::
Man kan titta på perl som ett programspråk, för både i Linux och Unix kan man använda sig av Perl som ett språk för att skapa textbaseradeprogram, detta även i Windows, men det är mer vanligt i unixbaserade system. Perl är också bland det vanligaste språket i applikationer som man så fint kallar CGI (Common Gateway Interface), men man kan använda andra så som C, C++ och säkert fler så länge man har en shebang högst upp som leder till tolken.

Detta visste du redan från de andra inläggen, men de har inte skrivit så mycket om PHP.

::PHP::
Man kan också se på PHP liksom Perl som ett programspråk.

Man kan med hjälp av ett tillägg som heter PHP-GTK få tillgång till det OO interfacet GTK+'s klasser och funktioner som underlättar skapandet av "klient side cross"-platform GUI applikationer.

Men det är inte nödvändigt med PHP-GTK för att skapa ett program för klienten, man kan använda PHP liksom Perl som ett ett språk för att skapa textbaseradeprogram, det som gör PHP så lämpligt för webben är att det går alldeles utmärkt att baka in html bland koden. Men PHP blir allt mer känt som enbart ett serverspråk.

Testa detta till ex. om du har PHP-installerat på din dator:
skapa i den mappen som du har php.exe i om du kör windows, en fil som heter typ.php eller nått.

Använd kanske denna kod, så ser du att det finns möjligheter för klientprogram också! :)

<?
echo "hejsan\n";

for($i=0;$i<10;$i++) {
echo $i."\n";
}
?>

Mer om PHP-GTK hittar du på http://gtk.php.net/

(om du inte redan visste detta) ;) :OO

JojoxxMedlem sedan juni 20004 308 inlägg
#9

I och med att PHP kan köras via CGI så skickar det även sitt utdata till stdio så visst kan det köras från ett konsol-fönster. Men, eftersom jerk vill veta skillnaderna mellan Perl och PHP så skulle jag väl inte vilja säga (även om Fredde inte gör det) att det är så man brukar använda PHP. PHP har dessutom en massa inbyggda funktioner för att hantera CGI-anrop. Perl använder lösa moduler för detta, kanske vanligast CGI.pm.

OT:
Terminologin här är rättså intressant. Ett program är ett rättså löst begrepp. Ett program beskriver ett händelseförlopp. Ett exempel kan vara ett program till ett födelsedagskalas, eller solvalla. Programspråk är alltså språket som programmet presenteras med. Ett script-språk är (om än luddigt) mer precisist (eller mindre oprecisist) :).

spangoMedlem sedan juni 20008 205 inlägg
#10

Re: Re: Skriptspråk eller serverspråk?

Fredde Mannen skrev:

... både i Linux och Unix kan man använda sig av Perl som ett språk för att skapa textbaseradeprogram...

Och, eftersom du pratar om PHP-GTK, kan det vara värt att nämna att det går utmärkt att använda Perl till "vanliga" fönsterbaserade program, genom bl.a. TK, wxWindows, GTK et.c. och med alla sannolikhet en hel drös andra bibliotek.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#11

Så till viss del kan man mer eller mindre säga att det är nästan bara syntaxen som skiljer dem åt, plus då att Perl använder moduler, medans PHP använder funktioner, vilket inte är egentligen en sådan stor skillnad, dvs modul och funktion.

funktion: färdig skapat program som underlättar skapandet av andra program, skulle jag nästan vilja att funktioner är.

modul: färdig skapat program som också detta underlättar skapandet av andra program, med en skillnad att en modul är en extern fil som inkluders i filen och från denna anropas funktioner som finns i modulen.

wäää.... :OO

SPiNMedlem sedan mars 20007 896 inlägg
#12

Man kan använda moduler med PHP också, bara så att du vet. ;)

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#13

SPiN skrev:

Man kan använda moduler med PHP också, bara så att du vet. ;)

baaah.. då är det praktiskt taget bara namnet och lite i syntaxen samt åldern som skiljer dem åt! :P

JojoxxMedlem sedan juni 20004 308 inlägg
#14

Javisst. Precis som med Lotus<->Saab, Rödmössa<->Ms Windows och Jesus<->Dolph Lundgren. Allt är samma sak ;) Med lite god vilja och eltejp går det mesta att få ihop.

spangoMedlem sedan juni 20008 205 inlägg
#15

Fredde Mannen skrev:

Perl använder moduler, medans PHP använder funktioner, vilket inte är egentligen en sådan stor skillnad, dvs modul och funktion.

Det där är all skillnad i världen! :o ;)

En funktion är ett "underprogram", eller vad man nu ska kalla det, en liten (eller stor) del återanvändbar kod. Om man ska dra det i stora drag har alla imperativa programmeringsspråk funktioner i en eller annan form (även om de ibland kallas subrutiner, procedurer, metoder eller något annat). Perl har funktioner.

En modul, däremot, används för att exportera funktioner eller annat (datastrukturer, klasser, konstanter m.m.), för att särskilja olika delar av ett program och för att underlätta distribution av funktions- eller klassbibliotek.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#16

spango skrev:

Det där är all skillnad i världen! :o ;)

En funktion är ett "underprogram", eller vad man nu ska kalla det, en liten (eller stor) del återanvändbar kod. Om man ska dra det i stora drag har alla imperativa programmeringsspråk funktioner i en eller annan form (även om de ibland kallas subrutiner, procedurer, metoder eller något annat). Perl har funktioner.

En modul, däremot, används för att exportera funktioner eller annat (datastrukturer, klasser, konstanter m.m.), för att särskilja olika delar av ett program och för att underlätta distribution av funktions- eller klassbibliotek.

Hänvisar till mitt tidigare inlägg:

med lite ändringar skrev:

funktion: färdig skapat program som underlättar skapandet av andra program, skulle jag nästan vilja att funktioner är.

modul: färdig skapat program som också detta underlättar skapandet av andra program, med en skillnad att en modul är en extern fil som inkluders i filen och från denna anropas funktioner

:q eller?

jerkMedlem sedan okt. 20033 inlägg
#17

Tack för hjälpen! Vi börjar nu få lite koll på hur det hela hänger ihop.

spangoMedlem sedan juni 20008 205 inlägg
#18

Fredde Mannen skrev:

Hänvisar till mitt tidigare inlägg:

med lite ändringar skrev:

funktion: färdig skapat program som underlättar skapandet av andra program, skulle jag nästan vilja att funktioner är.

modul: färdig skapat program som också detta underlättar skapandet av andra program, med en skillnad att en modul är en extern fil som inkluders i filen och från denna anropas funktioner

:q eller?

Alldeles korrekt. Det jag reagerade på var att du skrev att Perl hade moduler i stället för funktioner ;)

134 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)