Блогът на Артуро Кирантес
Едно от нещата, които се критикуват за испанския университет, е, че той не предоставя знания, които позволяват на студентите по-късно да получат достъп до нещо, наречено „пазар на труда“. Като оставим настрана факта, че университетът не е фабрика за служители, се оказва, че в бъдещата ви работа ще ви трябват инструменти и знания, за които дори не подозирате, когато влезете в кариерата си; и обратно, вие също научавате много неща, които няма да ви трябват по-късно. Проблемът е, че не знаете кой от инструментите, които носите в чантата, ще използвате в крайна сметка, което понякога ви кара да мислите, че допълнителното тегло е пречка. Не е.
Аз самият съм добър пример. Занимавам се с физика от осемнадесетгодишна, първо като ученик, след това като учител. Научих групова теория, математически методи, схеми, квант, относителност, статистическа механика, всичко. В по-голямата си част те не са ми били от полза в работата ми. Да, те бяха полезни за две неща: да ми осигурят добра обща научна култура, която ми позволява, наред с други неща, да пиша книги и да се появявам в Naukas, без да прецаквам твърде много; и да научим как работи Физиката и какви инструменти имаме.
Никога не се знае кога може да се наложи това, което научите. Отне ми пот и сълзи, за да премина курса по групова теория. Знаете ли, от всички научни статии, които съм чел оттогава, колко са говорили за груповата теория? Само един. Едно. Но благодарение на това, което си спомних от теорията на групите, успях да я прочета и разбера. В крайна сметка статията не ми беше полезна, защото използвам друг метод за изчисление, но в противен случай математическите връзки, които тази статия съдържа, биха ми спестили неприлична работа. Може да ми е полезно в бъдеще.
И сега дойде моментът да разкрия тъмна тайна за мен. Вие ме мислите за физик, имам официален документ, в който се казва, че съм, направил съм дисертация по физика, изкарвам си хляба като физик и съм известен в Twitter като @elprofedefisica. Но всъщност всеки ден знаете ли какво е истинското ми занимание?
Ще ви го разкрия: Аз съм компютърен програмист.
Е, добре, аз съм физик, пиша статии в списания за физиката и всичко това. Това, което се случва, е, че аз отговарям за компютърните симулации в моята група. Започнах с проект, който имаше за цел да измери размера на микроскопичните частици, използвайки разсейване на светлината. Тоест хвърляте лъч светлина върху обект и като изследвате светлината, която той разсейва, можете да откриете неща като неговия размер, форма или състав.
Ако обектът е много по-голям от дължината на вълната на използваната светлина, може да се приложи поредица от приближения и хубавото е, че получените формули са много прости. Може би си спомняте закона за пречупване на Snell, закона за отражение ("ъгъл на падане е равен на ъгъл на пречупване") и всичко това. Ако, от друга страна, частицата е много по-малка от дължината на вълната на светлината, може да се приложи опростяване, известно като приближение на Релей, което също позволява да се изчисли разсеяната светлина, абсорбираната светлина, степента на поляризация и всичко останало, които интересите да се изчислят, всичко по прост начин.
Между двата случая, когато частицата е със съпоставим размер с дължината на вълната, тогава имаме проблеми. Дори в най-простия случай, когато имаме сферични частици, уравненията на електромагнитното поле са сложни; и не казвам нищо, когато частицата няма сферична форма. В такива случаи се нуждаем от бързи и мощни компютри, за да можем да извършим изчисленията, от които се нуждаем.
Това е, което правя. Докато моите колеги настройват инструментите и измерват, аз подготвям необходимите компютърни кодове за извършване на изчисления и мога да сравнявам теорията и експеримента. Това ме прави програмист на групата, не само един, но и един от основните. Прекарах години в изчисляване на свойствата на разсейване на светлината за всички видове частици, а създадените от нас бази данни обхващат стотици гигабайта. Всичко това благодарение на моите познания като програмист. И откъде взех тези знания? Е, от тема за електромагнетизма. Дори не беше на дневен ред, но практиките се правеха от компютър, така че трябваше да се научим да програмираме в движение.
Не забравяйте, че говорим за осемдесетте. Сега бъдещите физици от моя университет имат свой предмет по програмиране, но през осемдесетте компютрите бяха екзотична статия, Интернет дори не съществуваше и методът на обучение беше да намериш живота си там. За щастие знаех някои основни езици за програмиране и това ми помогна да започна да уча нов език, наречен FORTRAN 77.
Когато го обясних на брат си (който изучаваше компютърни науки), той почти се засмя в лицето ми (и без него почти). Вече никой не е програмирал сериозно на този стар и твърд език, който датира от 50-те години. Сякаш ви казах, че съм купил сметало, за да изчисля. По-късно научи и осъзна, че не е глупаво. Оказва се, че FORTRAN (FORmula Translation) е езикът на строгостта в света на научните изчисления. Ако се опитвате да създавате програми в среда на Windows или Mac, този език е последният, върху който трябва да помислите, но в областта на мащабните изчисления няма нищо по-добро. Това е най-добрата дробилка за числа.
Минаха години, а ФОРТРАН все още е кралят в замъка си. Всички суперкомпютри, върху които съм работил, от моя университет до тези на RES (Испанска суперкомпютърна мрежа) имат различни софтуерни пакети, различни режими за обработка на опашки и всеки от тях е свят, когато става въпрос за поставяне на вашите програми в опашка, но абсолютно всички имат два общи елемента: компилатори C ++ и FORTRAN. Всъщност на всеки шест месеца се съставя списък, наречен Топ 500, който включва петстотинте най-бързи и мощни компютри в света. За да се установи класификацията, те са направени за стартиране на компютърен пакет, наречен LINPACK, който е програмиран в ... познаете? Да, във FORTRAN.
Едно от нещата, които най-много харесвам във FORTRAN, е, че мога да стартирам програмите си навсякъде. Не е необходимо да правя версия за моя компютър и друга за Mare Nostrum, защото едно и също копие на програмата е валидно и за двете машини. Когато ми бъде даден достъп до нов суперкомпютър, времето ми прекарва в изучаване на новия начин за опашка на програмата, но самата програма е същата. Също така, версията за компютър има ретро послевкус, който обичам. Отварям прозореца на интерпретатора на командния ред, появява се черен екран със зелени линии (настроих го така, аз съм романтик) и ми се струва, че съм във филм от седемдесетте. Да, разбира се, знам, че има графични среди за улесняване на компилацията, но предпочитам командния ред. Той е по-мощен, по-бърз и по-ефективен и ви връща във времето, когато компютърът е бил управляван с ваше знание, вместо с мишка или клип. Мои хобита.
Между другото, ако ви е интересно да видите как работи, можете да видите някои от моите програми и подпрограми тук.
Знам, че вече има много компилирани и налични програмни подпрограми (така че не е нужно да се научавате, да речем, да умножавате матрици, когато трябва), но в началото на професионалната си кариера научих, че когато версията или производителят на FORTRAN суперкомпютърът се променя, подпрограмите също се променят. Оттогава правя свои собствени подпрограми, прикачвам ги към основната програма и съм щастлив като яребица.
През 2015 г. FORTRAN все още е полезен както винаги, когато става въпрос за извършване на научни изчисления. Не знам всичките му възможности, но през годините съм научил много от тях и на един от рафтовете в офиса ми почива наръчникът FORTRAN-77 от началото на осемдесетте години, който беше в отдела. Сдобих се с него преди години и ще го доставя само от мъртвите си студени ръце. Е, може би един ден ще го предам на сина си, който сега учи физика. Може би така той ще намери работа в НАСА, която да контролира сондите „Вояджър“.
Това не е шега. Спомняте ли си филма Space Cowboys? Персонажът, изигран от Клинт Истууд, пенсиониран инженер, е единственият, който знае как работи сателит в орбита. Това е много стара система и експертите на НАСА признават нейното невежество: „Искате ли да опитате да разберете тази бъркотия? Системата за насочване на това гърне е праисторическа. Дори тези момчета не го разбират. Това е преди микропроцесора, това е преди ... всичко. »
Е, оказва се, че нещо много подобно се е случило в реалния свят. Лари Зотарели наскоро се оттегли от активна служба. Сега е на осемдесет години. На четиридесет и три се присъединява към екипа на мисията на Voyager като компютърен програмист. С такова специализирано оборудване като Voyagers, програмистите трябваше да използват много трикове и не всички от тях са в писмена форма. Понякога документите се губят, друг път са остарели. Ако се интересувате от темата (това, което наричам археология на данните), оставям ви примери тук, тук и тук.
Зотарели знаеше почти всички трикове на Вояджър, извън посочените в спецификациите в ръководството; и е, че ръководството с инструкции не предоставя всички отговори. Например, по един повод беше открито, че част от полетния софтуер на космическия кораб ще излезе офлайн през 2010 г. Никой не знаеше защо. Техническите документи не хвърлиха нова светлина. НАСА се свърза с всички живи програмисти на Voyager и никой не знаеше за прекъсването. Може би някой през 70-те години е смятал, че сондата няма да оцелее толкова дълго и е включил система за дистанционно деактивиране, може би това е проблем при програмирането или може би е част от актуализация, която никога не е била добре документирана. За щастие прекъсването най-накрая може да бъде отменено, но към днешна дата никой не знае кой го е програмирал или по каква причина.
Сега Лари Зотарели, последният оригинален програмист на екипа на Voyager, се оттегля окончателно. Тези, които го заменят, ще направят всичко възможно, разбира се, и със сигурност знаят FORTRAN в изобилие, но ще знаят ли какви изненади се крият в системата за програмиране на сондата? Не го вярвам. Използвам този език за програмиране от деветдесетте и все още не знам половината от масата; но дори да знаете наизуст ръководството, нищо не гарантира, че няма недокументирани трикове, грешки или подобрения в софтуера Voyager.
По време на това писане космическата сонда "Вояджър 1" е малко над 20,003 милиона километра от Земята. И все още работи. Основното ограничение, с което се сблъсквате, е липсата на енергия. Както споменах в тази статия, до 2020 г. дори антените на мрежата за дълбоко пространство на НАСА няма да могат да улавят вашите съобщения.
Надежда обаче има. Можете да направите „енергиен одит“, за да определите точните изисквания за мощност на всеки от вашите компоненти и да установите процедури за изключване, всичко това, за да се възползвате максимално от наличната енергия. За това трябва да знаете защо през 70-те години бяха взети определени инженерни решения, какъв смисъл имаше да се установят изискванията за мощност на бордовите инструменти и колко гъвкави можем да направим тези изисквания. Наистина ли тази подсистема се нуждае от 3,2 вата, или са достатъчни 3, а останалото е граница на безопасност? Най-добрият източник на знания за това се намира в техническата документация и в мозъка на нейните програмисти. И двамата се провалят поради възрастови причини: хартиите се губят и спомените също.
FORTRAN е език за програмиране, който, както се казва в Terminator Genesys, е „стар, а не остарял“. Други езици, много по-готини по това време, са изчезнали. Толкова съм убеден в това, че предлагам залог: бира, която след двадесет години Java или PHP ще бъде история. Можете да приемете или не, но във всеки случай тук е съвет за моите приятели BOFH: дръжте добре ръководствата си за програмиране и се грижете за тях като злато в плат. Аз вече си имам моята.