[JVM] Talen leren als Scala, Haskell en Clojure. Zinvol?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Sinds een jaartje ben ik naast mijn werk als .NET ontwikkelaar bezig met het leren van Java. Dat begon met het bouwen van Swing applicaties, en inmiddels ben ik web applicaties aan het bouwen. Eerst wat testprojectjes gedaan met JSF en uiteindelijk meer clientside bezig met AngularJS, maar wel een API met JAX-RS gebouwd (en PostgreSQL als database en Spring JdbcTemplate als simpele mapper).

Hartstikke leuk allemaal, vooral het open source en portability aspect ervan (C# icm Mono is nooit mijn ding geweest), maar Java is ergens natuurlijk ook een wat verouderde taal. Met Java 8 hebben ze wel wat nieuwe features toegevoegd om functioneel te kunnen programmeren (streams :) ), maar het blijft voor de rest een vrij verbose taal. En met de aankondiging van Swift (Apple) aan de ene kant, het lezen van een hoop nieuws over Python aan de andere kant, krijg ik steeds meer het gevoel dat we ons naar een de facto standaard aan het bewegen zijn dat talen minder verbose worden, wel strongly maar dynamisch getyped zijn, functional programming aspecten bevatten, etc.

En zodoende kwam ik terecht bij Scala, Haskell en Clojure. Nu is Haskell niet echt general purpose, maar vooral op functional programming gericht. En Clojure brengt bij mij oude nachtmerries naar boven van mijn tijd als AutoCAD ontwikkelaar (LISP :r AKA "shit ik ben ergens een haakje vergeten" :') ).

Maar Scala ziet er wel goed uit. De syntax spreekt mij wel aan (en naar mijn idee heeft Apple met Swift een hoop gekopieerd daarvan).

Anderzijds heb ik echter ook het idee dat Scala niet echt voeten aan de grond krijgt. Je ziet wel een paar vacatures in NL, maar op diverse internetfora lijken de meesten zoiets te hebben van "Java is toch ook prima? Zoveel voegt het niet toe, omdat we goede tooling hebben die veel voor ons genereert".

Kortom, hoe staan jullie hierin?

Is goede tooling belangrijker dan een cleanere syntax? Heeft Scala toekomst? Of blijft Java zo groot als het nu is en blijven talen als Scala (en Haskell, Clojure) een soort van "testing ground" voor nieuwe technieken die uiteindelijk ook aan Java worden toegevoegd?

PS:
Eigenlijk blijf ik C# een mooie taal vinden, maar het hangt nog teveel aan Windows. En voor mijn priveprojecten werk ik nou eenmaal graag met OS X en Linux. Daardoor ben ik Java (en de bijbehorende volwassen tooling) steeds meer gaan waarderen. En ik zie het ook als een extra vaardigheid die misschien geld waard kan zijn. Kortom, dat ik meer kan dan alleen .NET.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Kridri
  • Registratie: Juli 2012
  • Laatst online: 27-08 12:56
Op coursera loopt er een mooie course over scala die zowel functional Programming uitlegt met scala als taal. Een aanrader

Als iedereen een klein beetje luier was, zouden er een heleboel problemen zo de wereld uit zijn


Acties:
  • +1 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Mijn bescheiden mening (want ik ben helemaal geen expert op dit gebied) is dat functionele en declaratieve paradigma's een "next generation" zijn. Heel veel beweegt naar declaratieve of beschrijvende oplossingen toe, omdat in de praktijk blijkt dat als je puur OO en imperatief programmeert je heel veel bezig bent met implementatie en randverschijnselen in plaats van met problem solving. Met andere woorden: je bent veel meer bezig om aan de uitwerking van je oplossing te werken dan aan het beschrijven (en daarmee oplossen) van je probleem. Daarom is functioneel programmeren eigenlijk veel natuurlijker. Niet per se eenvoudiger, want je moet ook op een soort meta-niveau over je probleem nadenken. Lekker abstract verhaal maar dat past er wel bij :P

Daarnaast is het met een puur functionele programmeertaal makkelijker om concurrent programming te realiseren en taken te verdelen over verschillende nodes enzo. Iets wat dan aan de compiler overgelaten kan worden in plaats van dat je zelf threading moet gaan implementeren (randverschijnsel) met alle bijbehorende pains.

Erlang is trouwens ook wel eentje die genoemd mag worden in je rijtje :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 11-10 10:35
Zonder heel je verhaal of reacties te lezen.

Het antwoord op deze vraag is altijd:

Altijd.

Het is altijd zinnig om nieuwe talen te leren, al maak je er maar een heel simpel programmatje in en doe je er voor de rest niet zo veel mee. Elke ontwikkeltaal heeft een eigen mindset waar je als ontwikkelaar zijnde altijd wel iets van opsteekt.

Of het zinnig is om _echt_ bekend te raken met een taal, m.a.w. de SDK goed leren kennen, om er serieuze applicaties mee te gaan bouwen. Tjah dat heeft meer te maken met je eigen ambities.

Zie jij jezelf in de toekomst bij een bedrijf werken waar je Scala, Haskell of Clojure gaat gebruiken? Zo ja, go for it. Ik weet toevallig dat er voor Scala ontwikkelaars zeker wel een markt is in Nederland.

Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 12:50

beany

Meeheheheheh

Eigenlijk blijf ik C# een mooie taal vinden, maar het hangt nog teveel aan Windows.
Microsoft is bezig om met .NET vNext meer en meer multi-platform te worden. Ze werken daarbij samen met de makers van Mono. Schrijf .Net dus nog niet helemaal af als het om multi-platform gaat :) Dit komt overigens pas in VS2014

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 12-10 20:50
Grote bedrijven als Twitter enzo draaien volgens mij tegenwoordig voor grote delen op Scala. Imho is Scala een mooie variatie op de zoveelste Java klopper.

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Laatst online: 12:59
Ja Scala is cool. Ik ben nu bezig met de cursus 'Functional programming principles in Scala' op Coursera.
Het leuke is dat het volledig compatible is met alle Java libraries dus je kunt gewoon Java applicaties bouwen met een mooiere syntax, en het heeft volledige ondersteuning voor het functioneel programmeren paradigma.

Vooral in de academiche wereld wordt afaik veel met Haskell gewerkt. Voornamelijk omdat wiskundige problemen zich veel eenvoudiger laten vertalen naar een functionele talen als Haskell. En het aantal regels code die je nodig heb is ook nog eens veel korter.

En volgens mij begint functioneel programmeren juist langzaam aan steeds populairder te worden. Python heeft al een paar kleine features over genomen, Apple is met de Swift taal gekomen waar functionele truukjes mogelijk zijn, en Scala wordt ook al toegepast in het bedrijfsleven, al is Java nog steeds populairder.

Ik denk dat kennis van het functioneel paradigma wel enorm veel toe kan voegen voor je toekomstige carrière. Of dat dan Scala of Haskell is maakt in dat geval niet veel uit. Mijn voorkeur gaat op dit moment uit naar Scala omdat ik dan ook gelijk alle Java libs kan gebruiken. :P

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
beany schreef op zaterdag 07 juni 2014 @ 17:02:
[...]

Microsoft is bezig om met .NET vNext meer en meer multi-platform te worden. Ze werken daarbij samen met de makers van Mono. Schrijf .Net dus nog niet helemaal af als het om multi-platform gaat :) Dit komt overigens pas in VS2014
Zelfs al kun je ASP.Net op Linux draaien (voor een groot deel kan dat nu al met Mono), dan nog heb je geen volwassen IDE en tools om het ook op een ander platform te ontwikkelen. Visual Studio is tot nu toe de enige echte IDE voor .Net.

Ik heb weleens met Xamarin gespeeld, maar dat is toch vrij kaal vergeleken met Visual Studio, en haalt het totaal niet bij IDE's als Eclipse en Netbeans. Bovendien is de volledige versie niet gratis, hetzelfde geldt natuurlijk ook voor Visual Studio.

Met Java krijg ik volwassen IDE's inclusief een compleet platform en verschillende web containers (zoals Glassfish) gewoon helemaal gratis en voor niets, en volledig cross platform. Het maakt niet uit of ik op een Mac, Linux of Windows machine aan het werk ben (zit thuis eigenlijk altijd achter een Mac en heb geen zin om een VM te starten :P ).
Kridri schreef op zaterdag 07 juni 2014 @ 13:01:
Op coursera loopt er een mooie course over scala die zowel functional Programming uitlegt met scala als taal. Een aanrader
https://www.coursera.org/course/progfun

Deze ga ik zeker bekijken :)

[ Voor 19% gewijzigd door Lethalis op 08-06-2014 10:01 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Laatst online: 12:59
Voor Mono heb je op linux Monodevelop en dat is gratis. Het mist wel heel veel features die Visual Studio wel heeft maar heel erg slecht is het ook weer niet.

Het grootste probleem is denk ik het feit dat C# op Linux niet compiled naar native code. De gebruiker zal de mono runtime moeten installeren om je applicatie te kunnen starten. Banshee is/was de enige waarvan ik weet dat het in C# is geschreven maar volgens mij geven de meeste ontwikkelaars nog steeds de voorkeur aan C++ met GTK, en in mindere maten C++ met QT.

Ik denk dat voor crossplatform ontwikkeling Java ook een heel stuk volwassener is dan mono.

[ Voor 3% gewijzigd door WernerL op 08-06-2014 10:21 ]

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
WernerL schreef op zondag 08 juni 2014 @ 10:19:
Voor Mono heb je op linux Monodevelop en dat is gratis. Het mist wel heel veel features die Visual Studio wel heeft maar heel erg slecht is het ook weer niet.
Zegt iemand die zelf van mono af is gestapt voor een project en voor C++ en QT gekozen heeft ;)

Ik heb met Mono gespeeld, maar het haalt het qua volwassenheid gewoon niet bij Java. Bij lange na niet. Jouw keuze om voor C++ en QT te gaan voor een Linux applicatie begrijp ik dan ook volkomen :P Al was een Java applicatie wellicht eenvoudiger geweest om te bouwen (of in jouw geval GTK+ met Python? :D ).

Voor Scala heb ik nog het volgende gevonden:

https://www.cs.helsinki.fi/u/wikla/OTS/Sisalto/examples/

[ Voor 10% gewijzigd door Lethalis op 08-06-2014 15:38 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Volgens mij moet je de general purposeness van Haskell niet onderschatten. Van de drie voorbeelden die je geeft is Haskell denk ik de taal waar je als developer het meeste van kunt leren. Clojure lijkt mij niets, maar dat komt met name omdat ik haakjes als enige syntax een bijzonder slecht idee vind.

De meest interessante programmeertaal op dit moment vind ik Rust, een systems language waaraan gebouwd wordt door Mozilla. Ik denk dat het dynamisch getypeerd zijn juist in deze tijd waarin mobile performance/efficiency weer belangrijker maakt ook weer duidelijk begrensd is. In die categorie is OCaml ook wel een interessant (dat ook steeds weer terugkomt als inspiratie van talen als Rust en Swift).

Een andere optie is om zelf een taal te ontwerpen (evt met bijbehorende interpreter of compiler); ik denk dat je daar als developer misschien nog wel het meest van leert. :) Dat is waar ik momenteel ook redelijk veel tijd in stop: een taal met Python-achtige syntax, maar met als doel meer vervanging van C/C++ (LLVM backend).

Rustacean


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Even een update van mijn kant..

Ik ben sinds een paar dagen wat serieuzer met Scala aan het hobby-en en hoe langer ik ermee bezig ben, hoe leuker ik het vind :)

Daarnaast leer ik nu ook een hoop over allerlei tools die al een tijdje in de Java "wereld" worden gebruikt, maar waar ik verder weinig mee deed. Zo moest ik gisteren mijn Scala projectje eerst noodgedwongen naar Maven converteren, om Slick aan de praat te krijgen (ik miste enkele dependencies). Alleen maar om een paar uur later (nadat ik het eindelijk aan de praat had door mijn pom.xml bestand aan te passen en de maven-scala-plugin juist te gebruiken) te ontdekken dat Gradle veel fijner werkt.

Dus nu heb ik Gradle zover dat het mijn Scala programma compileert.

Volgende stap is dat ik Gradle weer een debugger laat starten, zodat ik er met een IDE weer aan kan attachen (ben nu even in Eclipse bezig en heb daar ook de Gradle plugin geinstalleerd).

http://forums.gradle.org/...n_debug_it_running_a_task

http://blogs.steeplesoft....tip-attaching-a-debugger/

Uiteraard vind je overal 10 manieren voor om iets te doen, dus ik moet zelf altijd even kijken wat nou de beste is.

Voor Scala is trouwens het volgende boek volledig online te lezen:

http://www.artima.com/pins1ed/

En is er ook het Lift cookbook:

http://cookbook.liftweb.net/

Want het lijkt me ook gaaf om het echt te gebruiken om er een REST api mee te bouwen die ik dan weer vanuit AngularJS gebruik.

Ik merk alleen wel dat ik Java al vrij snel een verouderde taal begin te vinden nu ik hiermee bezig ben :X En Java 8 verandert daar weinig aan.

Maar goed, ik leer nu allemaal nieuwe dingen en het is dus zeer zinvol gebleken :) Sowieso wil ik mijn bestaande Java projecten nu ook al naar Gradle omzetten :D

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Kajel
  • Registratie: Oktober 2004
  • Laatst online: 23-09 09:07

Kajel

Development in Style

Leuk om te horen dat je je steeds meer thuis voelt in Scala! Waar ik werk, doen we nagenoeg alles in Scala, en het is een heerlijke taal. De veiligheid van een statically typed language, maar vele malen compacter en productiever.

Als ik je wat tips mag geven:

- Als je REST APIs wil ontwikkelen, kijk dan vooral naar Spray. Dit begint een beetje de defacto standaard te worden om in Scala REST APIs te bouwen. Men is ook bezig Spray te "mergen" met Akka, waarna het Akka HTTP gaat heten. Daarmee gaat het ook onder de hoede van Typesafe komen, het commerciële bedrijf achter Akka en ook Scala.
- Akka is sowieso ook interessant als je concurrent wil programmeren.
- Typesafe heeft ook een mooi webframework gebouwd: Play. Zowel met Java als Scala te gebruiken, maar tegenwoordig volgens mij meer Scala gericht. De syntax/dsl doen me denken aan het gemak van Rails.
- Je hebt Slick al gevonden, ga zo door! Heel fijn ORM vind ik :)
- Qua build tools: Gradle is idd mooi spul, maar in de Scala wereld wordt SBT ook veel gebruikt. Dit is de defacto Scala build tool (letterlijk :P), en is steeds volwassener aan het worden!

Have fun!

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Tof om te horen dat jullie op het werk bijna alles in Scala doen :) Ik hoop dat Scala bij meer bedrijven gebruikt gaat worden.

Ik zal eens kijken naar Spray en Akka. Play ben ik al aan het bekijken. Sowieso heb ik met de Typesafe activator ui al wat voorbeeldprojecten bekeken. Erg handig en deze gebruikt inderdaad SBT om de projecten te builden.

Wat gebruiken jullie vooral als IDE? Eclipse, Intellij IDEA of zelfs Sublime Text / Emacs / VIM met Ensime? :D

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

Verwijderd

Clojure is echt zo verschrikkelijk fijn om te gebruiken. V.w.b. die haakjes: valt wel mee hoor. Tis geen CL, EL of Scheme in dat verband. Ik gebruik veruit vaker hash-maps {} en vectoren [] dan () lists (behalve wanneer ik echt met code, templating, macro's en syntax-quote/splice-unquote etc aan de gang ben.

Alles wat ik vaak moet herhalen over meerdere datatypes heen en per thema maak ik een protocol voor: een NamingConvention protocol met abstracte definitie voor ik noem maar wat "hyphenate" dan volledig implementeren op string, alle keywords gebruiken die functies maar dan wel eerst even met (name k) naar string geconverteerd, symbols naar str coercen en vervolgens een map over de vector en je kunt (hyphenate ["SOMETHING_TO_DO" :someone-to_call 'dinner-to-cook]) lekker zonder veel (pijn (en (moeite (evalueren (indien (gewenst) (anders (niet))))

Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 09-10 09:52
Wat je opmerking betreft, dat je in Clojure een haakje vergeet..

Gebruik gewoon Emacs in combinatie met parinfer: http://shaunlebron.github.io/parinfer/

Dan hoef je gewoon niet bekommeren om haakjes, en schrijf je zoals je zinnen schrijft. Clojure heeft namelijk geen syntax, geen keywords, je maakt gewoon on-live je eigen taal en keywords.

[ Voor 38% gewijzigd door Hatsieflatsie op 13-11-2015 22:47 ]


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
offtopic:
late reactie, topic niet eerder gezien..
Lethalis schreef op donderdag 16 oktober 2014 @ 08:55:
Tof om te horen dat jullie op het werk bijna alles in Scala doen :) Ik hoop dat Scala bij meer bedrijven gebruikt gaat worden.
Wij gebruiken scala ook bij ons bedrijf. Ook zie je dat dataintensieve dingen zoals LinkedIn's Kafka of Apache Spark in Scala zijn.
Ik zal eens kijken naar Spray en Akka. Play ben ik al aan het bekijken. Sowieso heb ik met de Typesafe activator ui al wat voorbeeldprojecten bekeken. Erg handig en deze gebruikt inderdaad SBT om de projecten te builden.
Spray werkt prima, Akka heb ik wat slechtere ervaringen mee omdat het lastig is om te zien waar messages vandaan komen, ze vrij untyped worden doorgegeven zijn, en het snel gebeurd dat je toch een multi-threading aspect over het hoofd ziet (bijv. data staat ergens gequeued in akka, maar volgende event gebruikt die data al die nog verwerkt moet worden; meerdere actors delen toch stiekem ergens data, of dingen als dat queues vollopen en het hele geheugen opeten.) Het is lastig om te zien in welke gevallen Akka nu echt handig is ten opzichte van voor mij andere overzichtelijkere oplossingen zoals Future's. Heb trouwens ook https://www.coursera.org/course/reactive gevolgd, waarin dit behandeld wordt.
Wat gebruiken jullie vooral als IDE? Eclipse, Intellij IDEA of zelfs Sublime Text / Emacs / VIM met Ensime? :D
IDEA + Scala plugin + SBT plugin, maar collega's gebruiken ook wel Eclipse. Jammer genoeg loop je enkel soms tegen kleine issues aan (van type .idea folder verwijderen en sbt project opnieuw importeren om op te lossen of issues die pas bij compilen optreden omdat IntelliJ net iets anders werkt als scala's compiler), maar de auto-completion e.d. werkt schitterend.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Kajel
  • Registratie: Oktober 2004
  • Laatst online: 23-09 09:07

Kajel

Development in Style

Lethalis schreef op donderdag 16 oktober 2014 @ 08:55:
Tof om te horen dat jullie op het werk bijna alles in Scala doen :) Ik hoop dat Scala bij meer bedrijven gebruikt gaat worden.
De grap is dat er niet zoveel bedrijven zijn die Scala gebruiken in NL, maar nog minder developers die er goed in zijn, dus over banen hoef je je niet druk te maken. Bij mij op mijn werk blijkt het zeer lastig om goede developers te vinden, en dan zoeken we niet eens specifiek naar Scala devs, maar ook naar bv Java devs die graag functioneel leren programmeren en slim genoeg zijn.
Wat gebruiken jullie vooral als IDE? Eclipse, Intellij IDEA of zelfs Sublime Text / Emacs / VIM met Ensime? :D
IntelliJ Ultimate + Scala plugin doet het voor mij prima :) Ik heb ook een collega die VIM gebruikt en een collega die zweert bij Sublime Text. Ik ben niet zo slim, en vooral lui, dus heb de type hinting, autocompletion en dat soort zaken van mijn IDE veel te hard nodig 8)

Acties:
  • 0 Henk 'm!

  • adis
  • Registratie: November 2012
  • Laatst online: 24-02 21:45
pedorus schreef op zondag 15 november 2015 @ 20:39:
offtopic:
late reactie, topic niet eerder gezien..


[...]

Spray werkt prima, Akka heb ik wat slechtere ervaringen mee omdat het lastig is om te zien waar messages vandaan komen, ze vrij untyped worden doorgegeven zijn, en het snel gebeurd dat je toch een multi-threading aspect over het hoofd ziet (bijv. data staat ergens gequeued in akka, maar volgende event gebruikt die data al die nog verwerkt moet worden; meerdere actors delen toch stiekem ergens data, of dingen als dat queues vollopen en het hele geheugen opeten.) Het is lastig om te zien in welke gevallen Akka nu echt handig is ten opzichte van voor mij andere overzichtelijkere oplossingen zoals Future's. Heb trouwens ook https://www.coursera.org/course/reactive gevolgd, waarin dit behandeld wordt.
Leuk om te lezen dat er meer NL'ers bezig zijn met Scala en reactive way :)
Ik ben ook wat aan het spelen met Akka (icm Play). Ik vind Akka nog een beetje moeilijk om te begrijpen. Ik probeer zoveel mogelijk simpele Actors te maken die zelfstandig iets kunnen doen, dus geen of bijna geen afhankelijkheid op andere data. Alleen ik voel dat dit eraan zit te komen.. hopelijk is dit niet weggegooid tijd.. :D

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

Hatsieflatsie schreef op vrijdag 13 november 2015 @ 22:46:
Wat je opmerking betreft, dat je in Clojure een haakje vergeet..

Gebruik gewoon Emacs in combinatie met parinfer: http://shaunlebron.github.io/parinfer/

Dan hoef je gewoon niet bekommeren om haakjes, en schrijf je zoals je zinnen schrijft. Clojure heeft namelijk geen syntax, geen keywords, je maakt gewoon on-live je eigen taal en keywords.
Wel in combinatie met Evil, hoop ik?

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • +1 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 09-10 09:52
Amanush schreef op woensdag 18 november 2015 @ 10:36:
[...]

Wel in combinatie met Evil, hoop ik?
Er wordt door abo-abo (van Lispy) al een variant van Parinfer ontwikkeld dat integreert met Evil.

Voor meer packages kun je kijken op emacs.zeef.com bijvoorbeeld. :)
Pagina: 1