Легенды не умирают
Теплый весенний день, школа, компьютерный класс с еще 286ми и тот самый Turbo Pascal на мерцающих экранах.
Мне 15 лет, первая среда разработки и первый язык программирования. Представили? Прочувствовали момент?
И тут школьный учитель выдает вечное и нетленное:
Паскаль — говно и устарел, язык исключительно для обучения таких дебилов как вы. Скоро про него все забудут и перейдут на святой Си во имя прогресса и развития ко-ко-ко.
Прошло 27 лет, того учителя давно доедают черви в могиле, да и мы сами уже с морщинами и сединой.
За это время было перепробовано множество запрещенных веществ языков программирования, фреймворков и ОС. Вся отрасль дружно хоронила то «древний Паскаль» то «святой Си» то «школьный PHP», временами пытаясь закопать еще и друг-друга.
И вот уже на дворе 2023й год, мир пережил кучу войн, пандемию и опять стоит на грани тотального уничтожения.
А паскаль бл#ть живее всех живых:
Теперь это называется Free Pascal , среда уже не Delphi а Lazarus но суть от этого не поменялась.
Оно работает, живет и процветает.
А очень и очень многие из «похоронной команды» — уже нет.
set root "/home/alex" set default "index.html" set port 8080 proc answer {socketChannel host2 port2} { fileevent $socketChannel readable [list readIt $socketChannel] } proc readIt {socketChannel} { global root default fconfigure $socketChannel -blocking 0 set gotLine [gets $socketChannel] if { [fblocked $socketChannel] } then {return} fileevent $socketChannel readable "" set shortName "/" regexp {/[^ ]*} $gotLine shortName set many [string length $shortName] set last [string index $shortName [expr {$many-1}] ] if {$last=="/"} then {set shortName $shortName$default } set wholeName $root$shortName if {[catch {set fileChannel [open $wholeName RDONLY] } ]} { puts $socketChannel "HTTP/1.0 404 Not found" puts $socketChannel "" puts $socketChannel "<html><head><title><No such URL.></title></head>" puts $socketChannel "<body><center>" puts $socketChannel "The URL you requested does not exist on this site." puts $socketChannel "</center></body></html>" close $socketChannel } else { fconfigure $fileChannel -translation binary fconfigure $socketChannel -translation binary -buffering full puts $socketChannel "HTTP/1.0 200 OK" puts $socketChannel "" fcopy $fileChannel $socketChannel -command [list done $fileChannel $socketChannel] } } proc done {inChan outChan args} { close $inChan close $outChan } socket -server answer $port vwait forever
Это самый настоящий, работающий HTTP-сервер на Tcl.
Оригинальный код от 1998 года: https://wiki.tcl-lang.org/page/DustMote
Я лишь поменял путь до каталога в самом начале.
Оно запускается и отдает статику на любых современных ОС где есть Tcl, по-сути — вообще везде.
Обратите внимание на отсутствие библиотек и зависимостей — их действительно тут нет, один голый стандартный Tclsh.
Так вот этот несчастный Tcl на моей памяти хоронят с момента его появления и до сих пор. А он до сих пор живее всех живых и работает.
Язык, появившийся в 1988 году (мне тогда было пять и код я еще не писал) считался программистскими массами вторичным унылым говном с самого своего появления. И считается таким до сих пор.
Это конечно не так модно и сексуально, как запихивание движка Javascript на серверную сторону, смузи за такое не нальют, но это работает.
Без драмы, превозмоганий и пафоса, без «переписываний с нуля» и каких-то постоянных диких поломок.
Легенды не умирают
Дело в том что успешная программа это идея.
На чем она там написана и как работает — всем насрать вторично.
Ну правда, вам разве интересно что Total Commander написан на втором Дельфи? Или что клиент Dropbox, тот самый который вы ставите к себе на компьютер работает на Python внутри?
Ощутили приступ «немодности» и пойдете их удалять?
Оно ведь работает и дает работать вам.
Существует огромное количество техник и технологий портирования между различными технологиями и платформами, поэтому перенести какую-то разработку из одной реализации в другую — обыденность в наши дни.
Переносят игры, 3D-движки, библиотеки, известные и популярные интернет-сервисы меняют внутреннюю реализацию практически постоянно.