Počet ću s RTL/2, jezikom u stvarnom vremenu s naglaskom na (a) ponovnom ulasku i (b) ružnoći. Jedini primjer koda koji mogu pronaći je ovaj, sa stranice Wikipedije. Ipak, bilo je dovoljno da se vrate traumatična sjećanja.
Kodirati:
TITLE Hello World; LET NL=10; EXT PROC(REF ARRAY BYTE) TWRT; ENT PROC RRJOB() INT; TWRT("Hello World#NL#"); RETURN(1); ENDPROC;
The
EXT PROC
deklaracija je uvući TWRT
funkciju iz standardne biblioteke kako bismo mogli ispisati nešto. RRJOB()
je ekvivalent za main()
.RTL/2 (ili, barem verzija koja je meni bila nametnuta) došao je s neugodnim okruženjem za izvođenje koje se izvodilo na DOS računalu, a morali ste koristiti zastrašujuće neprijateljski uređivač da biste ga napisali. Nepotrebno je reći da je dobio malo popularnosti izvan britanske kemijske industrije i sada je potpuno mrtav. Učili su me to kao dio modula u stvarnom vremenu na sveučilištu, prije nekih 30-ak godina.
Davno su me zanimali računalni jezici pa bih ih preuzeo i igrao se neko vrijeme, a oni bi krenuli dalje. Napisao sam neke stvari u ABC-u (prethodniku Pythona) na svom Atari ST-u radi zabave. Neki asemblerski jezici mogu biti grubi. Napisao sam neki SHARC sklop. Osim toga, ne bih rekao da sam napisao dovoljno na hrpi drugih jezika da bih mogao računati (sve stvari poput on-off). Imali smo dva profesora na koledžu koji su bili veliki obožavatelji ADA pa smo to morali koristiti za nekoliko predavanja. Napisao nešto Lispa i Prologa. Vidio sam malo Cobola, ali ga zapravo nisam morao napisati. Ipak, morao sam napisati biblioteku koja uvozi podatke Cobol ravne datoteke.
Međutim, najgori jezik bio je vlasnički jezik jedne medijske tvrtke. MTL: Morris Templateing Language. Doslovno nije postojao izvan stranica Morrisovih novina. Pokušao je pojednostaviti uobičajene stvari kako bi omogućio brži razvoj stvari kao što su kalendari, popisi, grafikoni itd., ali u stvarnosti se gotovo nikada nije koristio od strane većine objekata jer je rijetkih trenutaka bilo potrebno nešto izvan radnog vremena ljudi poput mene pa su rekli jebi ga i napravili grafiku
Ah... Zaboravio sam jednu... na mjestu gdje sam radio, stvorili smo neku vrstu 'jezika' koristeći XML. Prilično je teško objasniti kako je to funkcioniralo, ali zapravo je bilo prilično cool. Bio je za stream obradu velikih XML datoteka... ali nije kao XSLT... poput integracije s bazom podataka i hrpa drugih stvari.
Najstariji su Fortran i COBOL. Najneobičniji je bio IBM JCL. Ali i COBOL i JCL trajali su vrlo kratko. Fortran za vrijeme trajanja moje diplome.
Ono što je bilo prilično ljutito je to što sam bio tip za UNIX & C do kraja, ali sam morao surađivati s bazom podataka na IBM-ovom glavnom računalu putem poslova izvlačenja podataka opisanih gore. Mrzio sam to!
najstariji? = OSNOVNI
Najčudniji? = LISP, MIPS i TCL/Tk, ali oni su korišteni u mom dodiplomskom programu kao nastavni jezici.
Najčudnije je što sam zapravo koristio IRL? = ColdFusion oko vremenskog okvira Macromedia.
Također sam napravio nešto x86 sklapanje. Imam i brata matematičara, pa sam mu pomogao napraviti Fortran.
(Nijedan od ta tri ne bih ponovno dotaknuo da mogu. Uvijek kažem da mnogi studenti CS-a kažu da vole C dok uče. I to im je u lijepom sjećanju... dok ne moraju pisati C za novac.)
To bi bili najstariji/najopasniji, mislim. (Pa, najopasnije može uključivati i .bat datoteke.)
Radio sam i neke 6502 montaže, 68k montaže, C64 Basic i Blitz Basic (taj mi se svidio, smatram da me to pretvorilo u programera).
Što se neobičnog tiče, pomogao sam poznaniku da napiše "C+-", bizarnu prilagođenu C/C++ kombinaciju njihovog sveučilišta. Zašto? ZAŠTO? Bili su to za neke užasne tečajeve algoritama. Zašto bi trošili vrijeme na pisanje bizarnog opskurnog jezika kada im je nastavni plan i program TAKO JAKI? Kakva šteta.
OH... skroz zaboravio spomenuti OOF... Objektno orijentirani Fortran. U njemu smo radili zadatak za paralelno programiranje ~1991.
SQL je prilično čudan. Volim koristiti nazive stupaca kao što su "FROM", "WHERE" i "DISTINCT" kako bih ga poboljšao.
Najčudniji? Prolog, puno zabave
Najneobičnije? OS port u sklopu za ARC 'rekonfigurabilnu' arhitekturu. To je/bila je ISA specifikacija i implementacija referentne mikroarhitekture koja izričito ostavlja prostor za instrukcije proširenja specifične za čip, registre, arhitektonsko stanje i tako dalje. U osnovi, optimiziran za dizajniranje ASIC funkcionalnosti koja je usko integrirana na razini cjevovoda instrukcija s prilično generičkom CPU jezgrom.
Oh, također sam eksplicitno napisao neki PostScript za svoj preddiplomski tečaj teorije/dizajna/principa programskog jezika.
Sad ću se odšuljati.
Također, COBOL i IBM JCL.
Sysadmin, ali radio sam malo COBOL-a i NATURAL-a na starom poslu.
Najčudniji? Magna8 pod GCOS8. Jezik za "brzi razvoj" koji stvara COBOL na starom glavnom računalu Bull kojega je imao moj poslodavac. Magna8 je bila "funkcionalno programiranje" prije nego što je to postalo stvar. Trebali ste (u osnovi) unijeti naredbe bilo kojim starim redoslijedom i to bi imalo smisla za cijelu stvar i generiralo bi COBOL program da to učini. U stvarnosti su autori jezika znali da ne može učiniti puno bez pomoći, pa ste također upisali brojeve redaka u određenim rasponima (rasponi za svaki "modul", IIRC) i onda je morao uzeti COBOL izlaz, shvatiti što nije u redu, a zatim napisati još retka brojevima. bleh.
Najgadniji? 80286 Montaža. dvostruko bleh.
Najneobičnije? Dalje. Deep Blue C bio je drugoplasirani, ali Forth pobjeđuje.
Nikada nisam radio s nečim iznimno starim, čudnim, gadnim ili neobičnim, ali broj nezgrapnih, frustrirajući, loše dokumentirani, nepotpuni skriptni jezici u vlasništvu dobavljača s kojima sam se morao boriti bio je iznenađenje.
Posljednji poslodavac imao je više interno razvijenih konfiguracijskih DSL-ova za svoj vodeći proizvod.
Čudno i/ili gadno? Sendmail.cf i sendmail.mc, njegovo kopile s M4 makro procesorom.
RPG (RPG3) i IBM CL bi mi bili najneobičniji.
Također sam napisao neke VBA makronaredbe u Excelu za unos podataka u IBM PCOMM koristeći mrežu piksela i korištenje sendkeysa za automatiziranje zadataka poput kretanja kroz izbornike i ažuriranja datoteka s ocjenama. Uštedio sam doslovce tisuće radnih sati ručnog unosa podataka, ali bio sam užasnut da nešto ne krene po zlu budući da je to bio motor za cijeli sustav određivanja cijena, i bio je doslovno koristeći Excel za obavljanje stvari "stavite Y u 24. redak i 36. stupac na zaslonu, pošaljite tipku tipku Enter" i radite cijeli dan samo kružeći kroz tisuće ekrani
Također, izvorni C++, prije nego što je postojao kompajler, kada je pretvoren u srednji C. Što je, naravno, značilo da je otklanjanje pogrešaka bilo zabavno (ali barem nije izbacivalo stranice grešaka predložaka).
Što me također navodi na razmišljanje o C++-ovom predlošku meta-programiranja - i to ne na dobar način!
- Osnovno na TRS-80 (ranih 1980-ih u srednjoj školi)
- Basic, Forth, neka verzija C-a, sve na 8-bitnom Atariju
- Pascal, C, Modula-2 na Atari ST
- HyperTalk
- VAX Pascal i Turbo Pascal
Mnogo knjiga o raznim jezicima poput Prologa (volim čitati knjige o različitim jezicima, čak i ako ih nikad neću koristiti)
Java (u to vrijeme bila je nejasna, meni u svakom slučaju - imao sam radni projekt da uzmem Mac +zaslon osjetljiv na dodir+Javu i učinim nešto s njom. Srećom, otkazan je prije nego što je napisan i jedan red koda.)
VAX Basic - prvi pravi posao koji sam imao kao programer uključivao je ovo.
Aktivnosti kodiranja temeljene na C# i .NET-u sada zauzimaju moj radni vijek, ali one nisu nejasne.
Postojao je i domaći funkcionalni jezik koji je moj student koristio za tečajeve CS II. Njegova sintaksa donekle je modelirana na Prologu, budući da su korišteni uzastopno u tečaju. Njegova najizrazitija značajka bila je vrlo jednostavna sintaksa za lijeno vrednovanje specifičnih izraza. Mislim da se samo zalijepilo $
ispred njih za označavanje thunk. To je učinilo vrlo lakim podučavanje koncepata kao što su generatori koji proizvode beskonačne popise, ali samo dok se troše.
Izviđači PL/1
Home BASiC
Fakultet ForTran
Pascal
Modula-2
Smalltalk 85
PDP 8 ASM
Rad RPGII
COBOL
PL/SQL
C
Poslovni objekti
Smalltalk je bio najčudniji, RPGII je bio kod samo za pisanje. Dobro sam zarađivao jer sam mogao modificirati RPG od 1983. do 1998. Uživao sam u tome da PL/SQL bude brži
U RPG-u, numeričke varijable imaju 2 slova, Booleovi su 2-znamenkasti brojevi, veći od, manji od i jednaki pozicijama na kartici od 80 stupaca. Komentari idu od stupca 81 do 96.
Sendmailova konfiguracijska datoteka je jednostavno zla.
Gledajući unatrag, izvorni AMOS Basic bio je prilično čudan i gadan jezik. Sintaksa je bila posvuda, neki su dijelovi nalik prirodnom jeziku, neki su više nalik c-u, sve se radi putem ključnih riječi umjesto API-ja, tako da ih ima doslovce na stotine, bez ikakve dosljednosti oko ičega, a mnogi od njih su stvarno WTF materijal. A tu je i ugrađeni jezik animacije, AMAL
Također je malo radio na glavnom računalu serije Univac 1100 (to je bio glavni stroj sveučilišta u to vrijeme). 36-bitna riječ i radila je pomoću komplementa jedinica tako da je imala pozitivnu i negativnu nulu
Imali smo tečaj programskih jezika koji smo imali otprilike 8 zadataka i svaki je zadatak morao biti napisan na drugom jeziku... pa Smalltalk, Prolog, Lisp, C, ADA, OOPascal (Borland) i neki drugi.
Imam veliku želju pisati programe u Algolu.
To je bilo super. Znam da postoje oznake spojlera koje bih mogao upotrijebiti, ali ne želim komentirati i kvariti članak drugima. Ipak, malo predugo, moram priznati da sam preletio...
Akademska uporaba - x86 asembler ili Ada. Nisam siguran zašto, ali volio sam raditi na montaži, iako nikad nisam morao raditi ništa kompliciranije od nekoliko preddiplomskih zadataka. Adu su podučavali na mom sveučilištu jer smo imali neke obrambene tvrtke koje su uvelike zapošljavale iz naše škole i posebno tražile ovu vještinu. Nikada nisam razmišljao o tome.
Profesionalna upotreba - star C++. Radio sam oko 95% Java razvoja već 20 godina, ali trenutno nadgledam veliku C++ bazu kodova iz 90-ih. Postoji ogromna količina složenosti koja proizlazi iz 1) izvlačenja prihvatljive izvedbe iz hardvera iz ere 90-ih i 2) implementacije funkcionalnosti od nule koja je sada standardna u većini jezika.
Pogreška kodiranja koju sam spomenuo u prošlom pre-P.S. paragraf tog posta bio je rezultat užasnog ograničenja kontrolne strukture prikazanog u "Jednostavan program FORTRAN II" u članku na Wikipediji. IIRC I imao je trosmjernu granu koja je pod određenim okolnostima išla na pogrešan broj izvoda. Trebalo mi je 14 sati dana od utorka do nedjeljnog ranog jutarnjeg pljuska da prepoznam tu pogrešku, nakon što sam isključio pogrešku prevoditelja (prije sam pronašao jednu uvedenu C-E-I-R proširenjem).
Glavno proširenje C-E-I-R-a na FORTRAN II bila je implementacija logično trosmjerno grananje ako je izjava o grananju imala 'B' (za Booleov) u prvom stupcu izvorne kartice. Uvjet unutar zagrada izjave tada bi implementirao '*' kao AND operator i '-' kao isključivi ILI operator u izraz, a srednji broj naredbe od tri iza zatvorene zagrade bio bi granan na ako bi se izraz procijenio na FALSE (mislim). Ovo proširenje je omogućilo pisanje programa koji uspoređuju tekstualne nizove od 6 znakova (duljina 7090 riječi), što ga čini moguće napisati programe koje je COBOL-61 učinio potpuno jednostavnima. Unatoč tome, moj je šef trebao napustiti program prve faze opisan u istom zadnjem odlomku u COBOL-61, tako da se mogao proširiti kako bi se ispravile pogreške tipkanja u pogrešnom stupcu u RCA-PERT-formatu ulazni. Nije; morao sam ručno popraviti takve pogreške koje je otkrila faza 1.