Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse
  • 4 uker senere...
  • 2 uker senere...

Lisp er som en semi-fin dame som begynner i klassen din. Hun er litt mystisk og spennende med en gang og man blir litt interessert, men så finner man ut av at hun i virkeligheten hverken er så fin eller så spennende som man først antok og hun viser seg å være støgg, transseksuell og sær som et helvete. Æsj. Styr unna.

Lenke til kommentar

Dead_Rabbit: Enda godt du ikke beskrev Lisp-miljøet ;)

 

Med mindre man selv er sær nok til å bruke Emacs, får man nok ikke mye så praktisk igjen for å lære seg Lisp. (Jevnlig «positive reinforcement» er grunnleggende nødvendig i læringen av ethvert språk.)

 

Men det er fascinerende å oppdage hvor alle de «revolusjonerende» konseptene i nye språk som f.eks. Ruby kommer fra. Programmering handler mye om ideer, ved siden av de kjedeligere aspektene som verktøy, biblioteker, dokumentasjon, brukerbase etc. etc. Kanskje den evige higenen etter «bedre» språk å uttrykke tankene sine i ikke er så urealistisk likevel.

Endret av ....
Lenke til kommentar

Java:

public interface BinaerTre<E extends Comparable<E>> extends Iterable<E>

 

Hva handler E om her i denne sammenhengen? Bokstaven kan jo endres til en hvilken som helst annen bokstav så jeg er litt nysgjerrig på hvorfor E er valgt i denne oppgaven. Datatypen er jo ikke definert. Er poenget at den er den samme alle steder den er nevnt igjennom interfacen?

Lenke til kommentar
Lisp er som en semi-fin dame som begynner i klassen din. Hun er litt mystisk og spennende med en gang og man blir litt interessert, men så finner man ut av at hun i virkeligheten hverken er så fin eller så spennende som man først antok og hun viser seg å være støgg, transseksuell og sær som et helvete. Æsj. Styr unna.

Er man blind og døv er det lett å ta feil og gå for emacs-lisp, da vil scenarioet ditt stemme rimelig bra. En halvveis oppgående person vil gå for common lisp.

 

Hvis jeg nevner at jeg skriver 90% i COBOL på jobben burde det gi meg nok kredibilitet.

 

Svar på Project Euler #218 ønskes fortsatt desperat!

Lenke til kommentar
Er man blind og døv er det lett å ta feil og gå for emacs-lisp, da vil scenarioet ditt stemme rimelig bra. En halvveis oppgående person vil gå for common lisp.

Ingen tvil om dét, men Emacs Lisp har en belønningsmekanisme som ingen andre: Det er fryktelig gøy å utvide editoren med egne funksjoner og oppleve at produktiviteten øker som resultat.

Endret av ....
Lenke til kommentar
Java:

public interface BinaerTre<E extends Comparable<E>> extends Iterable<E>

 

Hva handler E om her i denne sammenhengen? Bokstaven kan jo endres til en hvilken som helst annen bokstav så jeg er litt nysgjerrig på hvorfor E er valgt i denne oppgaven. Datatypen er jo ikke definert. Er poenget at den er den samme alle steder den er nevnt igjennom interfacen?

 

Har litt problemer med å tolke hva du spør om her, så beklager dersom svaret er skivebom. :p

 

«E»-en er en hvilken som helst type som implementerer Comparable med seg selv. Du kan endre «E»-ene til «T»-er, og koden ville gjort akkurat det samme. Du kan på en måte se på det som en variabel som «inneholder» en type.

 

Grunnen til at man ønsker å definere BinaerTre med generics, er at man ikke bryr seg om hva treet skal inneholde. En gang vil du ha et BinærtTre som inneholder Epler, en annen gang Pærer og andre ganger Biler. Du kan jo da f.eks. lage tre klasser, BinærtEpleTre, BinærtPæreTre og BinærtBilTre. Men når du har skrevet koden, så vil du se at de tre klassene her helt like, med untak av at variablene er deklarert som forskjellige typer.

 

Eksempler for å vise... Et EpleTre:

	 class BinaertEpleTree {
	  private BinaertEpleTree left, right;

	  public void add(Eple element) {
		  ....;
	  }

	  public Eple getFirst() {
		  ......;
	  }
 }

 

Et PæreTre:

	   class BinaertPæreTree {
		private BinaertPæreTree left, right;

		public void add(Pære element) {
			....;
		}

		public Pære getFirst() {
			......;
		}
   }

 

Et «generellt» tre:

		 class BinaertTree<E> {
		  private BinaertTree<E> left, right;

		  public void add(E element) {
			  ....;
		  }

		  public E getFirst() {
			  ......;
		  }
	 }

 

Dersom du vil ha et EpleTre skriver du:

	 BinaertTre<Eple> epleTre = new BinaertTre<Eple>();

eller et fiken-tre:

	 BinaertTre<Fiken> fikenTre = new BinaertTre<Fiken>();

 

Den ekstra besvergelsen med <E extends Comparable<E>> gjør at du vet at «E»-ene dine implementerer Comparable-interfacet, og du får derfor lov til å kalle på metoder som er i det interface, selv om du ikke vet hvilken type objektene faktisk vil være.

 

 

Angående lisp...

Synes common-lisp og scheme er kjempemorsomt, jeg. :p Mulig jeg er bi, men jeg synes det er en særdeles lekker ladyboy. Noen språk med mer genial og enkel syntaks? Lister... kan det bli bedre? Det er homoiconic, man kan drive med metasirkulær programmering. Macroene er altid like morsome...

 

edit: bruker ikke emacs, da.. vim + clisp eller drscheme.

Endret av Blackslash
Lenke til kommentar

Oh, det var noe sånt jeg mente. Gode greier. :D Treet skal inneholde kontakter som blir lest inn fra fil. Kontaktene er definert med en egen interface de også, så jeg må lage klassen for kontakter først som også da implementerer "Kontakt".

 

public interface Kontakt extends Comparable<Kontakt>

 

Tror jeg ble litt klokere. Jeg må bare lage ferdig treet mitt og kontakt klassen. :p

 

Update: Når jeg lager klassen min Treet som implementerer den interfacen BinaerTre så kan jeg jo ikke endre noen av datatypene til funksjonene mine uten at eclipse klikker mongo? Gah, det er så lite produktivt å gjøre dette nattestid. :dontgetit:

Endret av data_jepp
Lenke til kommentar

Hehe, det er jo om natten det er morsomt å jobbe!

 

Dersom du bare leker deg litt med noe litt mer «fritt» enn en oblig, så kommer det kanskje fortere?

 

edit:

bruker ikke emacs, da.. vim + clisp eller drscheme.

Får du integrert dette i editoren slik du får med SLIME?

Tror ikke det, nei. Har ikke gjort noen forsøk, da. SLIME ser jo utvilsomt bra ut, men det gjør ikke opp for emacs. :p

Endret av Blackslash
Lenke til kommentar
Er man blind og døv er det lett å ta feil og gå for emacs-lisp, da vil scenarioet ditt stemme rimelig bra. En halvveis oppgående person vil gå for common lisp.

Ingen tvil om dét, men Emacs Lisp har en belønningsmekanisme som ingen andre: Det er fryktelig gøy å utvide editoren med egne funksjoner og oppleve at produktiviteten øker som resultat.

 

Det er vel en realitet for andre editorer også? Code::Blocks bruker Squirrel for dette, og Visual Studio bruker C++/CLI, Visual Basic eller C#

 

 

Hvorfor er emacs lisp så spesielt?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...