mboost-dp1

Gammelt software


Gå til bund
Gravatar #1 - arne_v
4. dec. 2018 15:28
Jeg har lige set en usenet post fra en som supporterer 1 million linier Fortran - oprindeligt udviklet på PDP-11 (70'er teknologi) så ikke overraskende Fortran 66 (ikke Fortran 77). Med Hollerith konstanter. Yuck.

Og for de 99.999% der lever i lykkelig uvidenhed om Hollerith konstanter så er det tekst gemt i integer.

Eksempel:


PROGRAM H
INTEGER*4 IA(4),I
DATA IA/4HHell,4Ho wo,4Hrld ,4H! /
IA(4)=4H!!
WRITE(6,100) (IA(I),I=1,4)
100 FORMAT(1X,4(A4))
END



Gravatar #2 - arne_v
4. dec. 2018 15:31
Og newz.dk code tag virker ikke med leading spaces. Ak. I må forestill jer 6 leading spaces på alle linier iundtagen den med label.

Og INTGER*4 er en DEC extension - standard er INTEGER, men i Fortran er DEC/VAX extension jo "it". :-)
Gravatar #3 - CBM
4. dec. 2018 17:56
Holy c... så hellere gwbasic eller c64 basic

Gravatar #4 - arne_v
5. dec. 2018 00:39
#3

Fortran 66 er lidt slem.

Allerede Fortran 77 var meget bedre.

Samme program i 77 ser ud som:


PROGRAM HH
CHARACTER*16 S
DATA S/'Hello world ! '/
S(14:14)='!'
WRITE(6,100) S
100 FORMAT(1X,A)
END


Og det er vel næsten læseligt.
Gravatar #5 - CBM
5. dec. 2018 13:49
#4: jep, en hel del mere læseligt faktisk :-)
Gravatar #6 - arne_v
6. dec. 2018 18:27
#5

Fortran 77 er et OK sprog.

Lidt gammeldags naturligvis og mange vil maaske smile lidt over det, men pæn Fortran 77 er ganske læsbart.

Man kan stadig skrive aldeles ulæselig kode (specielt ved at skrive Fortran 66 kompatibel kode), men det kan man jo i mange sprog.
Gravatar #7 - Claus Jørgensen
6. dec. 2018 18:33
#1

Det er på et eller andet plan utroligt at programmeringsprog ikke tog "strings" seriøst før engang i midt 90erne.

Alle gamle programmeringsprog virker umiddelbart elendige til string håndtering.
Gravatar #8 - arne_v
6. dec. 2018 18:53
#7

Hvad er at tage strenge seriøst? Have en data type for variabel længde strenge?
Gravatar #9 - Claus Jørgensen
6. dec. 2018 19:22
#8

Mere eller mindre ja. Ikke alt det pjat og problemer som C/C++ skabte (20 år hvor industrien havde 5-6 forskellige streng typer, det er altså til grin)
Gravatar #10 - arne_v
6. dec. 2018 19:44
#9

Det er rigtigt at det varede længe inden det blev almindeligt.

Mange ældre sprog inklusive Cobol og Fortran 77 havde fast længde strenge.

Men der er undtagelser.

Basic mener jeg har haft variabel længde strenge siden 60'erne.

Pascal. Turbo Pascal have String og VAX Pascal have Varying Char tilbage i midt-80'erne. ISO 10206 Extended Pascal definerede en standard variabel længde String i 1990.

Muligvis har PL/I og MUMPS også haft.

Men det var vel først i 90'erne med Python, C++ STL, Java etc. at det blev en selvfølge.


Gravatar #11 - Qw_freak
20. dec. 2018 13:38
WTF.....

Nu er jeg heller ikke nogen kode Expert, men hvad hulen er det der sker i det stykke kode?
Gravatar #12 - arne_v
20. dec. 2018 19:15
#11

Selv folk der programmerer men ikke kender Fortran kan blive forvirret.

Lad os tage 77 versionen foerst:

CHARACTER*16 S

erklarerer en variabel s af typen fast laengde streng med 16 tegn

DATA S/'Hello world ! '/

initialiserer s med en værdi

S(14:14)='!'

erstatter en del af strengen med en anden værdi

WRITE(6,100) S
100 FORMAT(1X,A)

udskriver

Nogenlunde til at forstaa.

66 versionen er mere tricky, fordi Fortran 66 ikke har en streng type. derfor gemmer man teksten i integers.

INTEGER*4 IA(4),I

erklærer en variabel ia som et integer array med 4 elementer (da der kan være 4 tegn i en 32 bit integer så skal der bruges 4 elementer til 16 tegn)

DATA IA/4HHell,4Ho wo,4Hrld ,4H! /

initalisering af array (tricket er at 4Habcd er en konstant som har værdien svarende til 'abcd')

IA(4)=4H!!

ændrer værdi igen med nH syntaxen

WRITE(6,100) (IA(I),I=1,4)
100 FORMAT(1X,4(A4))

udskriver alle array elementer
Gravatar #13 - arne_v
20. dec. 2018 19:24
Gravatar #14 - Qw_freak
21. dec. 2018 08:08
#12
Ja okay, det giver vel egentlig mening, men godt vi er kommet lidt videre end det.... :)
Gravatar #15 - CBM
21. dec. 2018 08:18
@arne..

formålet med


"S(14:14)='!'

erstatter en del af strengen med en anden værdi"

?

er det bare for at vise hvordan man udskifter et tegn i strengen eller er det på en eller anden måde påkrævet for at have ! til sidst i 'Hello World'?

Er du på en mission for at udbrede kendskab til Fortran, og i så fald, hvorfor? :-)

Jeg får grimme minder fra tiden med C64 basic og GW Basic :-)



Gravatar #16 - arne_v
21. dec. 2018 13:05
#15

At tilføje det andet udråbstegn med et assignment kom med i 66 eksemplet for at vise at H formatet ikke kun var i DATA statement. Og 77 eksemplet skulle jo så gøre det samme.

Fortran (77) var mit første programmeringssprog og vil derfor altid være noget særligt for mig. Og heg bed mærke i den usenet diskussion. Jeg postede det her for skal vi kalde det "nørd interessen". Jeg tror ikke at der er nogen som vil kaste sig over Fortran, men derfor kan det jo være meget sjovt at se noget anderledes.
Gravatar #17 - Qw_freak
21. dec. 2018 13:15
arne_v (16) skrev:
Jeg tror ikke at der er nogen som vil kaste sig over Fortran, men derfor kan det jo være meget sjovt at se noget anderledes.

Det tror jeg du har ret i og jeg tror også nogen gange det er sundt "moderne" programmører at se hvor vi er kommet fra. :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login