DSGF.no Forum  
DSGF.no    HjelpHjelp   SøkSøk   MedlemslisteMedlemsliste   GrupperGrupper   Bli MedlemBli Medlem   RetningslinjerRetningslinjer   InnstillingerInnstillinger   Sjekk private meldingerSjekk private meldinger   Logg InnLogg Inn 
  Forumoversikten »   Teknologibabbel »   Programmering og databaser
Euphoria
Start Nytt Tema   Svar på Tema Vis Forrige TemaVis Neste Tema
Side 1 av 1 [5 Posts]  
Av Innlegg
theJack
OoaHelaNatten
OoaHelaNatten


Ble Medlem: 12 Apr 2004
Innlegg: 485
Bosted: Oslo
Offline
 Euphoria

Et enklere programmeringsspråk.
Rapid Deployment Software - Euphoria

Superfleksibelt og lettleselig, mange gode editors tilgjengelig med syntaksfarging for å gjøre koding lettere.

Kan brukes til DOS, WINDOWS (finnes hjelpeutstyr som ligner VB) og LINUX.

Kodeeksempelet nedenfor er et utdrag fra en fil. Kommentarer i oransje er ikke en del av filen, men mine egne kommentarer til leseren. TAB# erstatter TAB karakteren i dette innlegget.

Kode
for i = 1 to 10 do
TAB#print(1, i)
TAB#puts(1, '\n')'\n' = 10 mens "\n" = {10} - her ville de fått samme output
-- sprintf(1, "%d\n", i) = print(1, i) puts(1,'\n')
To streker etter hverandre gjør resten av linja til en kommentar i koden. Kommentaren viser en proffere utgave av koden
end for
Output
Kode:
1     | Skriver ut verdien av i (1), gÃ¥r sÃ¥ til ny linje
2     | Skriver ut den nÃ¥værende verdien av i (2)
3     |
4     |
5     |
6     |
7     |
8     |
9     |
10    | Skriver siste verdi. I neste runde blir i = 11, grensen er 10.
      | Og sÃ¥ lager puts(1,'\n') en ny linje før loopens ende er nÃ¥dd.
[Her går programmet videre fra loopen]



Forklaring:
Objekttyper:
integer
31-bits heltall: Verdier: 0 -> 2^30 -1 og -1 -> -2^30

atom
32-bits, aksepterer desimaltall

sequence
Samling objekter. Antallet objekter begrenses bare av minne.
{} har 0 objekter innenfor
{} = { } =
{
} =
{TAB#}
I nesten alle sammenhenger er TAB, SPACE og CR likeverdige som mellomrom, og antallet mellomrom mellom to uttrykk har ingenting å si. Hele kodeeksempelet kan skrives på en linje, med mellomrom i stedet for nye linjer, men det ville blitt vanskelig å lese.

{'\n'} har 1 objekt ({'\n'} = {10} = "\n")
{'a','n'} 2 objekter ({'a','n'} = "an")

Man kan godt blande objekktyper innenfor en slik samling:
{ 10, '\n', "\n", {10, 15, 92, -77.03}, "ADGF", {{}}, {}, { 0, 15, {}} }
BÃ¥de typene sequence, integer og atom finnes her. Fri orden.
hente informasjon fra sequences:
s = { 10, '\n', "\n", {10, 15, 92, -77.03}, "ADGF", {{}}, {}, { 0, 15, {}} }
dette medfører at:
s[1] = 10 og s[2] = '\n' (som = 10)
s[3] = {10} mens s[3][1] = 10
s[4] = {10, 15, 92, -77.03} s[4][3] = 92
s[5] = "ADGF"
Character strings
er litt spesielle, men dere er nok kjent med det allerede. "abc" = {'a','b','c'} og de har tallverdier: { 97, 98, 99 }
Det går ikke an å sette alt mulig rart inn i character strings:
{ 'a', 'b', -3, {}, 'c' } kan ikke skrives innenfor " "

{} = ""
{' '} = " " (space)

Eksempelkode for sequence
sequence
s
s = { 10, 15, -12, "AB", {}, {'a'} }
for i = 1 to length(s) do
TAB#print(1, s)
end for
Output
Kode:
1015-12{65,66}{}97
Her ser vi at det mangler noe, f.eks puts(1, '\n'), som fører til:
10
15
-12
{65,66}
{}
97


object
Objekter kan være både sequence og atom. De er dermed mer fleksible enn noe annet, men bruk av en objekttype som godtar alt gjør feilsøking vanskelig. Euphoria er meget godt på feilsøking.

Funksjoner og prosedyrer (function / procedure)
Funksjoner og prosedyrer er kodesnutter som defineres underveis og kan kalles opp senere ved hjelp av deres navn. De defineres med 0 eller flere parametere, som fungerer som lokale variabler innenfor funksjonen/prosedyren. Forskjellen mellom funksjoner og prosedyrer er at funksjonen returnerer en verdi -som alltid må brukes. Den kan skrives til skjermen, eller gis til en variabel. Å kalle opp en funksjon som ikke brukes fører til SYNTAKSFEIL (og programmet ditt lukkes). Prosedyrer har ingen verdi, og det vil medføre syntaksfeil å forsøke å sette en variabel lik resultatet av en prosedyre, eller å bruke "verdien" fra en prosedyre. Siden denne ikke eksisterer.

Prosedyrer brukt:

Definisjon: print( integer FileNumber, object PrintObject )
Filnummeret til skjermen er 1.
Filnummeret til ERROR (skjerm) er 2.
Filnummeret til KEYBOARD er 3. Du kan ikke skrive til fil 3, men rutiner for å lese en fil kan brukes til å lese keyboardet (men ikke skjermen, som man bare skriver til).
Bruk:
print
(1, 10) - skriver 10 på skjermen
print
(1,'\n') - skriver 10 på skjermen
print
(1,"\n") - skriver {10} på skjermen

Definisjon: puts( integer FileNumber, object Characters)
"Characters" er et objekt, men med strengere krav enn det som er vanlig:
Verdien må kunne skrives som: '' (og dermed være en integer)
eller: "" (og dermed være en endimensjonal sequence)
Mellom: to ' skal det alltid være ett tegn
Mellom: to " kan det være 0 eller flere tegn.
Bruk:
puts
(1,"APE") - skriver APE
puts
(1,"A") - skriver A
puts
(1,'A') - skriver A
puts
(1,{97,98,99}) - skriver abc
puts
(1,{65,66,67}) - skriver ABC
puts
(1,{97,98,{}}) - sequence inside character string - ERROR

Definisjon: printf(integer FileNumber,sequence FormatString, object DisplayValues)
FormatString er en character string, men må kunne skrives på formen "" ('' godkjennes ikke, som 'a' istedet for "a")
I FormatString finnes vanlig tekst, og koder:
"%%" - kode som vises som "%"
"%d" - kode som viser heltallverdien av DisplayValues eller et objekt i DisplayValues

Når DisplayValues er av typen atom (eller integer) vil alle kodene bruke denne verdien. Kikk gjerne på den røde kommentaren i det første kodeeksempelet nå. Om DisplayValues er av typen sequence, vil hvert objekt innenfor DisplayValues bli benyttet en gang, korresponderende med kodene i FormatString -fra venstre mot høyre.

Bruk: printf(1, "%d", 10) - skriver 10
i = 12
printf(1, "%d", i) - skriver 12 (verdien av i)
printf
(1, "%d %d", 10) - skriver 10 10
printf
(1, "%d%d%%", 10) - skriver 1010%
printf
(1, "%d%d%d%d", {10, 12, 10, 11} ) - skriver 10121011
printf
(1, "%d.%d.%d.%d", {101, 25, 100, 97} ) - skriver 101.25.100.97

Funksjoner:
Definisjon: length(sequence s)
Bruk: x = length({10, 20}) - x = 2
x = length({{},{}}) - x = 2
x = length({}) - x = 0
x = length("abcd") - x = 4
x = length({ {15,16,17}, {12,13}, 11, -4.5 }) - x = 4 - sequence inne i sequence er bare 1 objekt, uansett egen lengde.

length forteller hvor mange objekter en sequence inneholder.

print(1, length({12})) - skriver 1

Kode:

s = { 99, {68}, {}, 0 }
printf(1, "%d\n", length(s))
printf(1, "%s : %s : %s : %d", s)  #%s skriver tekst istedetfor tall ('a' for 97)

Output
Kode:

4
c : D :  : 0  # verdi[1] = 99 = 'c' - skriver c pÃ¥ skjermen
              # før neste kode: " : " - skriver dette pÃ¥ skjermen
              # verdi[2] = {68} = "D" - skriver D pÃ¥ skjermen
              # før neste kode: " : " - skriver dette pÃ¥ skjermen
              # verdi[3] = {} = "" - skriver derfor en serie pÃ¥ 0 tegn (ingenting)
              # før neste kode: " : " - skriver dette pÃ¥ skjermen
              # formatet for tall igjen: verdi[4] = 0 - skriver 0 pÃ¥ skjermen

Kode:

printf(1,"%s","Name")    # Dette er en vanlig feil
 [Resultat: N]           # "Name" = {'N','a','m','e'}, type: sequence.
                           Derfor brukes bare verdi 1 (s[1]) som her er 'N'
printf(1,"%s", {"Name"}) # Dette er den rette løsningen
 [Resultat: Name]        # {  {'N','a','m','e'} } s[1] = {'N','a','m','e'} = "Name"

_________________
Jeg har hørt det før, og jeg hører det igjen: Klipp håret og få deg en jobb!
Det er av sine egne medarbeidere man skal ha det.

All good things are ducks
Og da kan du angre som en hest!

InnleggSkrevet: Fre 21 Mai 2004, 20:59
  Vis Medlemmets Profil Send Privat Melding Send e-post MSN Messenger    Til Toppen 
Findus
Spitzy (!)
Spitzy (!)

Ble Medlem: 11 Apr 2004
Innlegg: 176
Bosted: Oslo
Offline
Eldgammel sak ja, men jeg følte bare for å se litt på hva språket hadde å tilby.
Men jeg må si jeg blir skremt når de som står bak språket påstår følgende:
"...a programming language that's powerful, easy to learn, and a lot more fun than other languages."

Jeg får umiddelbart inntrykk av at det er et elendig språk laget av amatører.
_________________
Nudeshirt.no - Endelig tilbake!!!

InnleggSkrevet: Søn 14 Aug 2005, 21:03
  Vis Medlemmets Profil Send Privat Melding Besøk Medlemmets Nettside MSN Messenger    Til Toppen 
theJack
OoaHelaNatten
OoaHelaNatten


Ble Medlem: 12 Apr 2004
Innlegg: 485
Bosted: Oslo
Offline
Lenge siden sist jeg var her...

Euphoria er ikke et amatørspråk.
Det er likt mange andre språk, men veldig åpent, og baserer seg på "renere" tekst enn en del andre formater, noe som gjør det mye lettere å lese.

Det er helt gratis å drive med, og du finner store mengder nyttige funksjoner og demoer samlet i et stort arkiv.

I tillegg finnes det en wrapper for 3dstate/Morfit som lar deg bruke avansert 3d teknologi med Euphoria. (Mer at du ikke kan skape inntekter herfra uten å ha lisens fra 3dstate)

Powerful, easy to learn and a lot more fun...

Du kan gjøre hva som helst. Virkelig.
Det er intuitivt, logisk, og overgangen til/fra andre språk er ikke vanskelig.
Du kan gjøre hva som helst, igjen.
Det kan fort vise seg å være moro.
Hvis du liker sånt.
_________________
Jeg har hørt det før, og jeg hører det igjen: Klipp håret og få deg en jobb!
Det er av sine egne medarbeidere man skal ha det.

All good things are ducks
Og da kan du angre som en hest!

InnleggSkrevet: Tir 16 Aug 2005, 14:08
  Vis Medlemmets Profil Send Privat Melding Send e-post MSN Messenger    Til Toppen 
hitmark
Främling
Främling

Ble Medlem: 19 Mar 2006
Innlegg: 15
Offline
kan jeg få henvise til python?

InnleggSkrevet: Søn 19 Mar 2006, 05:21
  Vis Medlemmets Profil Send Privat Melding    Til Toppen 
theJack
OoaHelaNatten
OoaHelaNatten


Ble Medlem: 12 Apr 2004
Innlegg: 485
Bosted: Oslo
Offline
I all oppriktighet: Jeg arbeider i øyeblikket med C#. Mindre intuitivt enn Euphoria, men mer effektivt. Så lenge det ikke plager meg at alle som skulle bruke noe jeg eventuelt måtte lage har .net framework og Windows-miljø.

Python er sikkert verdt en nærmere undersøkelse på et passende tidspunkt i livet.
_________________
Jeg har hørt det før, og jeg hører det igjen: Klipp håret og få deg en jobb!
Det er av sine egne medarbeidere man skal ha det.

All good things are ducks
Og da kan du angre som en hest!

InnleggSkrevet: Søn 19 Mar 2006, 11:06
  Vis Medlemmets Profil Send Privat Melding Send e-post MSN Messenger    Til Toppen 
Vis Innlegg fra:   Sorter etter:   
Side 1 av 1 [5 Posts]  
Start Nytt Tema   Svar på Tema Vis Forrige TemaVis Neste Tema
  Forumoversikten »   Teknologibabbel »   Programmering og databaser
Gå Til:  

Du kan ikke starte nye temaer i dette forumet
Du kan ikke svare på temaer i dette forumet
Du kan ikke endre dine egne innlegg i dette forumet
Du kan ikke slette dine egne innlegg i dette forumet
Du kan ikke delta i avstemninger i dette forumet


Powered by phpBB © 2001, 2005 phpBB Group