[alg] welke linux scripttaal leren?

Pagina: 1
Acties:
  • 139 views sinds 30-01-2008
  • Reageer

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik ben al een tijdje wat aan het experimenteren met Linux en ik wil ook wat script vaardigheden op gaan doen. Mijn vraag is dus welke scripttaal ik hiervoor het beste kan gaan leren. Het liefst een scripttaal waarin voor mij ook nog iets interessant te leren valt.

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Tja, wat wil je gaan doen ? Er is *zoveel* keus...
Bash
Tcsh
Perl
Python
TCL/Tk
etc...

Verwijderd

Perl is dan een hele geschikte keus, misschien Python maar die taal ken ik verder niet echt. Perl kent veel mogelijkheden (webscripting en shellscripting, maar je kunt ook GUIs maken met Tk) en zit mooi in elkaar, met name de regex support. Verder zijn er een grote hoeveelheid modules beschikbaar voor de meest uiteenlopende dingen (http://www.webgoeroe.net/item/695). En het is eigenlijk standaard op elke linux bak geïnstalleerd.

HTH :)

edit:
Mocht je uiteindelijk voor Perl kiezen dan raad ik je aan "Programming Perl" van Larry Wall te kopen, de klasieker op Perl gebied (bekend als The Camel) en is erg leuk om te lezen. Uitgegeven door O'Reilly. Eventueel is Learning Perl ook wel geschikt.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op 29 september 2002 @ 20:06:
Perl is dan een hele geschikte keus, misschien Python maar die taal ken ik verder niet echt. Perl kent veel mogelijkheden (webscripting en shellscripting, maar je kunt ook GUIs maken met Tk) en zit mooi in elkaar, met name de regex suppor
Aha.. ik denk dat we een goeie kandidaat hebben gevonden. Het is inderdaad erg praktisch dat Perl op iedere bak staat, en verder heb ik er al veel over gehoord.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
XTerm89D schreef op 29 september 2002 @ 20:05:
Tja, wat wil je gaan doen ? Er is *zoveel* keus...
Bash
Tcsh
Perl
Python
TCL/Tk
etc...
Ik heb nog niet echt iets concreets in gedachten, maar ik wil in ieder geval 1 scripttaal onder linux verkennen. En het liefst een waar ik ook nog wat nieuwe ideeen uit op kan doen.

Verwijderd

Alarmnummer schreef op 29 september 2002 @ 20:10:
[...]

Aha.. ik denk dat we een goeie kandidaat hebben gevonden. Het is inderdaad erg praktisch dat Perl op iedere bak staat, en verder heb ik er al veel over gehoord.
Arien, Martijn (tomato) en ik zijn er alledrie gek op ;) (mijn dynamische sig is ook Perl powered *D)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
En hoe verhoud Perl zich tot PHP?

  • jep
  • Registratie: November 2000
  • Laatst online: 31-08 19:38

jep

Ik denk perl, flexibel snel en makkelijk :). Oja, en erg leuk! :)

Verwijderd

Alarmnummer schreef op 29 september 2002 @ 20:14:
En hoe verhoud Perl zich tot PHP?
De PHP syntax is grotendeels van Perl afgeleid (PHP is begonnen als een set Perl scripts) maar neigt iets meer naar C, de OO implementatie van PHP is wat C++/Java achtiger, bij Perl werkt dit echt nogal anders dan je tot nu toe gewend bent. Verder is de PHP bak met functies met name gericht op het web gebruik, bij Perl is er de CGI module voor web specifieke dingen. De Perl syntax is rijker dan die van PHP, waardoor je heel ingewikkeld uitziende maar ook compacte code kunt schrijven 8), maar of en hoe je dat doet is je eigen keuze. There are more ways to do it, is de Perl slagzin.

Tot zover deze Perl propaganda :+

edit:
Als je shellscripting wilt doen is PHP sowieso geen geschikte keus, het KAN wel, maar lekker werkt het niet.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ok thanx, dan ga ik mij eens in Perl verdiepen :)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 17-08 22:44
Let er wel op dat in Perl er echt meerdere wegen zijn die naar Rome leiden.

Perl is een heleboel syntaxen verzameld. En als je serieus bent wat betreft Perl, dan kun je het beste Programming Perl van O'Reilly kopen. Van de maker zelf en met humor geschreven.

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Perl schijnt ook de enige taal te zijn die er na encryptie hetzelfde eruit ziet als ervoor. :)

Bash is ook handig, dat kan je vergelijken met Windows batch, maar dan wel een stuk uitgebreider met een aantal handige language constructs. Het is vrij makkelijk te leren. De functionaliteit zit in de console programma's en die hebben allemaal wel een man-entry. :)

Verwijderd

Ik was Perl fan, tot ik Ruby tegenkwam. Ruby is 'a better Perl than Perl itself'. Perl's OO faciliteiten zijn zeer matig, Ruby daarentegen is fundamenteel OO opgezet en biedt uitstekende OO faciliteiten. Ruby's standard library is in tegenstelling tot die van Perl dan ook geheel OO.

Ruby bevat verder kilo's syntactische suiker en elegante features om leuke expressies te bouwen. Waarschijnlijk zelfs meer dan Perl (en daarnaast zijn ze in Ruby veel minder rommelig ingebouwd). Ikzelf ben niet van plan om ooit nog Perl te programmeren.

Ruby's enige nadeel is dat ze nog zo jong is. Er is weinig documentatie beschikbaar, en er zijn (in vergelijking tot Perl) ook nog maar weinig bestaande libraries voor beschikbaar (maar daar wordt uiteraard hard aan gewerkt, zie de links hieronder). Ruby wordt in Japan (waar de maker woont) overigens al wel meer gebruikt dan Python.

Linkjes:
- ruby-lang.org - Ruby homepage.
- Programming Ruby - Het Ruby boek (waar ook ik met veel plezier Ruby uit geleerd heb).
- Ruby Application Archive - Handig uitgebreid lijstje beschikbare Ruby libraries.

Have fun :).

Verwijderd

Ericston schreef op 29 september 2002 @ 20:53:
Perl schijnt ook de enige taal te zijn die er na encryptie hetzelfde eruit ziet als ervoor. :)
Inderdaad, Perl wordt om dezelfde reden (onleesbaarheid) daarnaast ook wel een 'write-only' taal genoemd >:).

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik vermoed eerlijk gezegd, Alarmnummer kennende, dat hij blijer zal worden van Python dan van Perl ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik denk trouwens dat dit wel een aardig overzicht is voor Alarmnummer >:) .

Map Function

Een paar flames:
Perl is executable line noise
Python is executable pseudocode

Python is to Perl as Java is to C++.
Python Language
Neither Ruby nor Python are functional languages. But both have features that are reminiscent of a functional style.
Zelf gebruik ik overigens 'gewoon' bash scripts als ik een scriptje moet schrijven om een meer atomaire applicatie in te pakken.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • odysseus
  • Registratie: Augustus 2000
  • Nu online

odysseus

Debian GNU/Linux Sid

Als het je gaat om hoe de taal op zich in elkaar zit dan zou ik eens naar Python of Ruby kijken, daar heb ik veel goeds over gehoord. Zelf gebruik ik naar volle tevredenheid Perl, een heerlijke taal door zijn flexibiliteit. Je bent veel minder aan een vaste 'stijl' gebonden dan bij talen als Java. Zo kun je in Perl een if-constructie heel leesbaar schrijven:
code:
1
print "$a is groter dan $b" if ($a > $b);

Natuurlijk is de 'gewone' manier met accolades ook mogelijk: "TIMTOWTDI" is het Perl-motto :). Bij het gebruik van de CGI-module komen ook weer leuke constructies bovendrijven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
    while (my $ref = $query->fetchrow_hashref())
      {
        print Tr(
                 td([
                     $ref->{voornaam},
                     $ref->{achternaam},
                     $ref->{jaar},
                     $ref->{afdeling},
                     "$ref->{adres}" . " " . "$ref->{postcode}" . (" ($ref->{woonplaats})" || ""),
                     $ref->{mail}
                    ])
                );
      }

Een veel compactere manier om tabellen uit te schrijven ben ik eerlijk gezegd nog niet tegengekomen. Het is wel mogelijk dat je scripts nogal snel onoverzichtelijk of onleesbaar worden, maar dat is iets wat je helemaal zelf in de hand hebt. Je wordt niet gestuurd om het leesbaar te houden.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • tomato
  • Registratie: November 1999
  • Niet online
He, grappig topic ;)

Ik ben de laatste tijd zelf weer wat meer onder Unix (Solaris en Linux) bezig, deels door mijn studie. Ik zou eigenlijk iedere Unix gebruiker een basiskennis Perl aan willen raden. Wanneer je er een beetje mee uit de voeten kunt is het werkelijk als een Swiss Army Knife (waar je dus van alles mee kunt) :)

Maar zoals mbravenboer al opmerkte, vermoed ik ook dat Alarmnummer meer gecharmeerd zal zijn van Python of misschien in mindere mate van Ruby. Ligt er natuurlijk ook aan wat hij precies zoekt.

Het is onder Unix vooral handig om te weten wat er allemaal is en wat je daarmee kunt. Een beetje kennis van Perl past daarbij wel erg goed. Maar eigenlijk is het nog veel fijner om je shell goed te kennen, waarschijnlijk Bash.
The - DDD schreef op 29 september 2002 @ 20:51:
Let er wel op dat in Perl er echt meerdere wegen zijn die naar Rome leiden.
Da's ook een manier om TIMTOWTDI te zeggen ;)

  • Juup
  • Registratie: Februari 2000
  • Niet online
Ik kan niet nalaten te zeggen dat je met Perl wel hele elegante leesbare code kan schijven.
Alleen de meeste vieze honden Perl programmeurs doen dat niet. Als je het goed wilt leren, dan begint elk Perl programma met dit:
code:
1
2
3
#!/usr/bin/perl -Tw

use strict;

T staat voor Tainting: moeilijk uit te leggen.
w is voor warnings, geeft melding bij twijfelachtige constructies
strict is voor nette code (alles declareren enzo (my $variable = 'blaat';))

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Een veel compactere manier om tabellen uit te schrijven ben ik eerlijk gezegd nog niet tegengekomen.
Deze doet het ook niet slecht toch? :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  create-row:
    Person(voornaam, achternaam, jaar, afdeling, adres, postcode, woonplaats, mail)
      ->
    [xml:element[
      <tr>
        <td> ~cd:voornaam   </td>
        <td> ~cd:achternaam </td>
        <td> ~cd:jaar       </td>
        <td> ~cd:afdeling   </td>
        <td> ~cd:adres ~cd:postcode ~cd:woonplaats </td>
        <td>
            <a href=~mailurl> ~cd:mail </a>
        </td>
      </tr>
    ]]
      where <conc-strings> ("mailto:", mail) => mailurl


Het is iets verboser, maar het genereert ook gewone XML en maakt geen gebruik van libraries om HTML te genereren. Het doel van deze methode is met name om XML op te kunnen bouwen in XML syntax.

Hier is de rest van een kleine demo die ik net ff heb gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  main = 
    iowrap(create-document)
   _
  create-document:
    persons
      ->
    [xml:document[
      <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
          <title>XHTML generation with Stratego</title>
        </head>
        _
        <body>
          <h1>Werknemers</h1>
          _
          <table>
            <thead>
              <tr>voornaam</tr>
              <tr>achternaam</tr>
              <tr>geboortejaar</tr>
              <tr>afdeling</tr>
              <tr>adres</tr>
              <tr>e-mail</tr>
            </thead>
            <tbody>
              ~*table-rows
            </tbody>
          </table>
        </body>
      </html>
    ]]
      where <map(create-row)> persons => table-rows

(_ zijn weer voor de newlines die wegvallen als ik post vanuit Mozilla :( ).

Dit kan zo overigens ook in Java en andere talen, maar ik heb het nog niet voor andere talen geimplementeerd.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
(_ zijn weer voor de newlines die wegvallen als ik post vanuit Mozilla ).
Konqueror die heeft er ook last van.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 29 september 2002 @ 20:19:
edit:
Als je shellscripting wilt doen is PHP sowieso geen geschikte keus, het KAN wel, maar lekker werkt het niet.

Het kan prima hoor :)

En slecht vind ik het zeker niet werken, vooral als je al aardig wat php kennis hebt is het maken van een php-shell script natuurlijk een eitje.

Voor het beheren van je systeem lijkt het me iig erg nuttig dat je de basis kennis voor perl en bash hebt.
Al is het alleen maar dat de meeste shellscripts in een van die twee geschreven zijn en dat je er daardoor alleen al vrij veel aan hebt.
De syntax van bash, perl en php lijken erg veel op elkaar dus als je er een kent kan je ze alle drie lezen ;)

Alleen is perl wel de meest complexe van de drie en het vaakst echt onduidelijke stukken voor mij bevatte.

  • Slashdotter
  • Registratie: Maart 2000
  • Niet online
Ik stem voor Perl :)

Maar dat is omdat ik alleen Perl ken...

Verwijderd

tomato schreef op 29 september 2002 @ 22:06:
Maar zoals mbravenboer al opmerkte, vermoed ik ook dat Alarmnummer meer gecharmeerd zal zijn van Python of misschien in mindere mate van Ruby. Ligt er natuurlijk ook aan wat hij precies zoekt.
Ik vind dat Alarmnummer maar eens uit die oh-zo-mooie OO wereld moet stappen en eens een hele andere soort taal moet leren ;) Doe het dan direct goed, doe Perl(tm)

Verwijderd

The - DDD schreef op 29 september 2002 @ 20:51:
En als je serieus bent wat betreft Perl, dan kun je het beste Programming Perl van O'Reilly kopen. Van de maker zelf en met humor geschreven.
Verwijderd schreef op 29 september 2002 @ 20:06:
edit:
Mocht je uiteindelijk voor Perl kiezen dan raad ik je aan "Programming Perl" van Larry Wall te kopen, de klasieker op Perl gebied (bekend als The Camel) en is erg leuk om te lezen. Uitgegeven door O'Reilly. Eventueel is Learning Perl ook wel geschikt.
;)

  • tomato
  • Registratie: November 1999
  • Niet online
http://www.oreilly.com/catalog/perlsysadm/

Heb het boek zelf nog nooit ingekeken, dus kan er verder niet veel over zeggen.

Verwijderd

Overigens draait Perl ook prima onder Windows (zie http://www.activestate.com/Products/ActivePerl/), is er zelfs een .NET uitbreiding voor Perl beschikbaar, bestaat er veel ondersteuning voor (tools, standaard software, userbase, platformen).

Met Perl kun je bijzonder krachtige expressies maken, wat je nogal wat typewerk kan schelen, maar wat de code wel bijzonder onleesbaar maakt. Dit is zowel een gehate als geliefde eigenschap van deze taal, en er is zelfs een wedstrijd voor: The Annual Obfuscated Perl Contest (http://www.sysadminmag.com/tpj/obfuscated/)

De liefhebbers van deze taal zijn bijna religieus in hun waardering en verspreiden het ook vaak alsof het een religie is. Veel van deze evangelie is te vinden op het web, en kan je behoorlijk helpen als je vast komt te zitten. Zie bijv. http://perl.plover.com/ voor een voorbeeld van zo'n site.

HTH :)

  • im_ik
  • Registratie: November 2000
  • Laatst online: 28-12-2025

im_ik

dat ben ik dus

Meschien ook handig om eens 1 dagje te kijken naar bash / sh
om de simple reden dan bijna heel *nix/linux daarmee aanelkaar hangt.
Waardoor het erg makkelijk is om te kunnen lezen en wijzigen..

just my 2 cent

edit: Python is verder ook leuk omdat het met JPython in je java code kan laten meedraaien :)

Atari Terminator AI - LegoBlockX3 = ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T008ᖟ


Verwijderd

Ik denk ook dat Alarmnummer beter bediend is met Python dan met Perl. Ik persoonlijk programmeer graag in Python, terwijl ik programmeren in Perl zoveel mogelijk vermijd. Dat vermijden heeft twee (gerelateerde) redenen:
1) ik kan mijn eigen code na een paar maanden niet meer ontcijferen; comments helpen ook niet veel
2) ik ontwikkel veel sneller in Python
En de relatie tussen die twee is natuurlijk de (onleesbare) syntax van Perl, ik denk dat iedereen die vaker in Perl programmeert wel eens een paar uurtjes op een construct heeft zitten turen waar later een bizar karakter verkeerd blijkt te staan.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bij perl vind ik vooral het overdadig gebruik van die meta-variabelen ($_ enzo) vreselijk slecht leesbaar.
Je opent een file en ineens blijkt een bepaalde variabele de inhoud van die files te bevatten, of een filepointer ernaar te zijn etc.
Of je gaat dan met een while loop door de content van die file heen zonder expliciet op te geven dat je met die file bezig bent etc en die vage $_-achtige vars hebben dan de inhoud ervan.

Imho maken dat soort zaken het er niet duidelijker op. Zeker als beginner niet natuurlijk :)
Dat is ook een van de redenen dat, sinds ik ontdekt heb dat je php ook prima commandline kan gebruiken, ik nauwelijks nog wat met perl doe :)
En als ik het gebruik gebruik ik het op een "java" of "php" achtige manier (dus al die meta-vars niet gebruiken, gewoon echte vars assignen etc).

Verwijderd

ACM schreef op 30 september 2002 @ 12:37:
Bij perl vind ik vooral het overdadig gebruik van die meta-variabelen ($_ enzo) vreselijk slecht leesbaar.
Dat is vooral het geval als je het maar heel zelden gebruikt. Larry Wall is een taalkundige en Perl lijkt als je het goed leest op de gewone Engelse taal. $_ is bijvoorbeeld het onderwerp waar je over praat.
code:
1
2
3
4
open(FILE, "bla.txt") || die("Could not open file bla.txt: $!");
while(<FILE>) {
   print $_;
}

Ziet er wellicht cryptisch uit, maar er zit een gedachte achter ;) Als je Perl goed wilt leren moet je eigenlijk een goed boek kopen, want je leert dergelijke dingen niet goed uit andermans scripts (omdat die, bij gebrek aan kennis) haast niet te lezen zijn.
Je opent een file en ineens blijkt een bepaalde variabele de inhoud van die files te bevatten, of een filepointer ernaar te zijn etc.
Als dat al zo is hoef je dat helemaal niet te weten.
Of je gaat dan met een while loop door de content van die file heen zonder expliciet op te geven dat je met die file bezig bent etc en die vage $_-achtige vars hebben dan de inhoud ervan.
Imho maken dat soort zaken het er niet duidelijker op. Zeker als beginner niet natuurlijk :)
Daarom moet je als beginner ook niet zulke code gaan schrijven. Het het is perfect mogelijk PHP-achtige code te schrijven die iedereen begrijpt, maar na mate je meer Perl gebruikt ga je gebruik maken van de meer krachtige dingen. Dat hangt helemaal van jezelf af.

Verwijderd

Ik zou gewoon eerst eens bash leren. Wat is daar mis mee? Goed bash leren, tot je beseft dat je er niet alles mee kan.
Wanneer je dan dingen gaat missen en get gaat frusteren ben je klaar voor perl enzo.

Bash is goed om te leren omdat het niet teveel ingewikkelts kan. Leer je eerst goed de basics.

Verwijderd

Verwijderd schreef op 30 september 2002 @ 17:51:
Dat is vooral het geval als je het maar heel zelden gebruikt.
Ik denk dat Perl je vooral blind maakt voor de gebreken van Perl als je het wel gebruikt. Jouw code is een prachtig voorbeeld van de hersenbeschadigingen van perl:

code:
1
2
3
4
open(FILE, "bla.txt") || die("Could not open file bla.txt: $!");
while(<FILE>) {
   print $_;
}

Als je van deze code een sub wilt maken heb je al 2 side-effects (voor zover ik kan beoordelen): zowel FILE als $_ zijn globaal, en blijven globaal als je ze in een sub zet. Vooral bij FILE is dat lastig, omdat je hem niet ff local kunt maken met my FILE, want een file is geen echt object in Perl (met $_ kan dat trouwens ook niet). Toegegeven, je kunt er iets aan doen met globs, maar zeg nu zelf, maken twee soorten variabelen/objecten een taal eenvoudig of makkelijk hanteerbaar?

Perl barst werkelijk van dit soort side-effects als je niet waanzinnig goed uitkijkt. Daarom vind ik Perl persoonlijk niet geschikt voor grotere projecten, naast de onleesbaarheid van de code, die ook massa's problemen oplevert als er meer dan een programmeur aan het project werkt.
Pagina: 1