Блог Артуро Кірантеса
Одне з речей, яке критикують щодо іспанського університету, полягає в тому, що він не забезпечує знань, які дозволяють студентам пізніше отримати доступ до чогось, що називається "ринком праці". Залишаючи осторонь той факт, що університет - це не фабрика для працівників, виявляється, що у вашій майбутній роботі вам знадобляться інструменти та знання, про які ви навіть не підозрюєте, починаючи кар’єру; і навпаки, ви також дізнаєтесь багато речей, які згодом вам не знадобляться. Проблема полягає в тому, що ви не знаєте, який з інструментів, який ви носите в сумці, ви зрештою будете використовувати, що іноді змушує вас думати, що зайва вага є перешкодою. Це не так.
Я сам є гарним прикладом. Я займався фізикою з вісімнадцяти років, спочатку студентом, потім викладачем. Я вивчив теорію груп, математичні методи, схеми, квант, теорію відносності, статистичну механіку і все. Здебільшого вони не приносили мені ніякої користі в моїй роботі. Так, вони були корисні для двох речей: забезпечити мені добру загальну наукову культуру, яка дозволяє мені, серед іншого, писати книги та з’являтися в «Науках», не надто псуючись; і дізнатися, як працює фізика та які інструменти ми маємо.
Ви ніколи не знаєте, коли вам може знадобитися те, про що дізнаєтесь. У мене піт і сльози пройшли курс теорії групи. Знаєте, скільки з усіх наукових статей, які я прочитав з тих пір, скільки говорили про теорію груп? Тільки один. Один. Але завдяки тому, що я запам’ятав із теорії груп, я зміг її прочитати та зрозуміти. Врешті-решт стаття була для мене непотрібною, оскільки я використовую інший метод обчислення, але інакше математичні співвідношення, що містяться в цій статті, заощадили б мені непристойну роботу. Це може бути мені корисно в майбутньому.
І ось прийшов час розкрити про мене темну таємницю. Ви думаєте про мене як про фізика, у мене є офіційна стаття, в якій сказано, що я є, я зробив дисертацію з фізики, заробляю на життя як фізик, і мене в Twitter називають @elprofedefisica. Але насправді, щодня, ти знаєш, яким є моє справжнє заняття?
Я розкрию вам це: Я програміст.
Ну добре, я фізик, пишу статті в журнали про фізику і про все таке. Що трапляється, так це те, що я відповідаю за комп'ютерне моделювання у своїй групі. Я розпочав з проекту, метою якого було вимірювання розміру мікроскопічних частинок за допомогою розсіювання світла. Тобто ви кидаєте промінь світла на предмет і, досліджуючи світло, яке він розсіює, ви можете дізнатися такі речі, як його розмір, форма або склад.
Якщо об’єкт набагато більший за довжину хвилі використовуваного світла, можна застосувати ряд наближень, і добре, що отримані формули дуже прості. Ви можете пам’ятати закон заломлення Снелла, закон відбиття («кут падіння дорівнює куту заломлення») і все таке інше. Якщо, з іншого боку, частинка набагато менша за довжину хвилі світла, можна застосувати спрощення, відоме як наближення Релея, яке також дозволяє обчислити розсіяне світло, поглинене світло, ступінь поляризації та все інше. що цікавить для обчислення, все простим способом.
Між цими двома випадками, коли частинка має розмір, порівнянний з довжиною хвилі, саме тоді ми маємо проблеми. Навіть у найпростішому випадку, коли ми маємо сферичні частинки, рівняння електромагнітного поля є складними; і я нічого не кажу, коли частинка не має сферичної форми. У таких випадках нам потрібні швидкі та потужні комп’ютери, щоб мати змогу виконувати необхідні обчислення.
Це я і роблю. Поки мої колеги налаштовують прилади та вимірюють, я готую необхідні комп’ютерні коди для проведення обчислень та маю можливість порівняти теорію та експеримент. Це робить мене програмістом групи, не єдиною, а однією з головних. Я витратив роки, обчислюючи властивості розсіювання світла для всіх типів частинок, а створені нами бази даних охоплюють сотні гігабайт. Все завдяки моїм знанням програміста. І де я взяв ці знання? Ну, з теми про електромагнетизм. Це навіть не стояло на порядку денному, але практики проводились за допомогою комп’ютера, тож нам довелося навчитися програмувати на льоту.
Пам’ятайте, що мова йде про вісімдесяті. Зараз у майбутніх фізиків мого університету є своя тема з програмування, але у вісімдесятих комп'ютери були екзотичною статтею, Інтернет навіть не існував, а методом навчання було знайти там своє життя. На щастя, я знав деякі мови програмування BASIC, і це допомогло мені почати вивчати нову мову, яка називається FORTRAN 77.
Коли я пояснив це своєму братові (який вивчав інформатику), він ледь не засміявся мені в обличчя (і без нього майже). Ніхто не серйозно ставився до програмування на тій старій і жорсткій мові, яка датується 1950-ми рр. Нібито я говорив тобі, що купив рахівницю для розрахунку. Пізніше він дізнався і зрозумів, що це не було безглуздо. Виявляється, FORTRAN (переклад FORmula) був мовою суворості у світі наукових обчислень. Якщо ви намагаєтеся створювати програми в середовищі Windows або Mac, ця мова є останньою, про яку слід задуматись, але в галузі великих обчислень немає нічого кращого. Це остаточна дробарка.
Минули роки, а ФОРТРАН все ще є королем у своєму замку. Усі суперкомп'ютери, над якими я працював, від мого університету до тих, що працюють у RES (Іспанська мережа суперкомп'ютерів) мають різні програмні пакети, різні режими обробки черг, і кожен із них є світом, коли справа доходить до того, що ваші програми потрапляють у хвіст, але абсолютно всі мають два спільних елементи: компілятори C ++ та FORTRAN. Насправді кожні півроку складається список під назвою Top 500, який включає п'ятсот найшвидших і найпотужніших комп'ютерів у світі. Для встановлення класифікації вони призначені для запуску комп'ютерного пакету під назвою LINPACK, який запрограмований на ... ви здогадуєтесь? Так, у FORTRAN.
Одне з речей, яке мені найбільше подобається у FORTRAN, - це те, що я можу запускати свої програми де завгодно. Мені не потрібно робити версію для свого ПК, а іншу для Mare Nostrum, оскільки одна і та ж копія програми дійсна для обох машин. Коли я отримую доступ до нового суперкомп’ютера, мій час витрачається на вивчення нового способу поставити програму в чергу, але сама програма однакова. Крім того, версія для ПК має ретро присмак, який я люблю. Я відкриваю вікно інтерпретатора командного рядка, з’являється чорний екран із зеленими лініями (я його так налаштував, я романтик), і мені здається, я був у фільмі семидесятих. Так, звичайно, я знаю, що існують графічні середовища для полегшення компіляції, але я віддаю перевагу командному рядку. Він потужніший, швидший та ефективніший і повертає вас до часів, коли комп’ютером керували за вашими знаннями, а не за допомогою миші чи картинки. Мої захоплення.
До речі, якщо вам цікаво подивитися, як це працює, ви можете переглянути тут деякі мої програми та підпрограми.
Я знаю, що вже є багато підпрограм програмування, вже складених і доступних (тому вам не доведеться вчитися, наприклад, множити матриці, коли це потрібно), але на початку своєї професійної кар’єри я дізнався, що коли вони змінюють версію FORTRAN або виробника суперкомп’ютера, підпрограми також змінюються. Відтоді я створив власні підпрограми, додаю їх до основної програми, і я щасливий, як куріпка.
У 2015 році FORTRAN як і раніше корисний як колись, коли мова заходить про проведення наукових розрахунків. Я не знаю всіх його можливостей, але я багато з них дізнався за ці роки, і на одній із полиць у моєму кабінеті лежить посібник FORTRAN-77, починаючи з вісімдесятих років, який знаходився у Департаменті. Я схопив його багато років тому і позбавлю лише від своїх мертвих холодних рук. Ну, можливо, одного дня я передам його своєму синові, який зараз вивчає фізику. Можливо, він знайде роботу в NASA, яка контролює зонди "Вояджер".
Це не жарт. Пам’ятаєте фільм «Космічні ковбої»? Персонаж, якого зіграв Клінт Іствуд, інженер у відставці, єдиний, хто знає, як працює супутник на орбіті. Це дуже стара система, і експерти NASA визнають її незнання: «Хочете спробувати розібратися в цьому безладі? Система наведення цього горщика є доісторичною. Навіть ці хлопці не розуміють. Це до мікропроцесора, це до ... всього ».
Ну, виявляється, щось дуже подібне сталося і в реальному світі. Ларрі Зоттареллі нещодавно звільнився з військової служби. Зараз йому вісімдесят років. У сорок три роки він приєднався до команди місій "Вояджер" як програміст. З таким спеціалізованим обладнанням, як «Вояджери», програмістам доводилося використовувати багато хитрощів, і не всі вони написані письмово. Іноді документи втрачаються, інший раз вони застарівають. Якщо вас цікавить предмет (те, що я називаю археологією даних), я залишаю вам приклади тут, тут і тут.
Зотареллі знав майже всі хитрощі «Вояджера», понад те, що зазначено в інструкції; і полягає в тому, що інструкція з експлуатації не містить усіх відповідей. Наприклад, одного разу було виявлено, що частина програмного забезпечення польоту космічного корабля перестане працювати в автономному режимі в 2010 році. Ніхто не знав, чому. Технічні документи не пролили нового світла. NASA зв’язалося з усіма живими програмістами Voyager, і ніхто не знав про розрив зв'язку. Можливо, хтось у 1970-х думав, що зонд не витримає так довго і ввімкнув систему віддаленого відключення, можливо, це був збій у програмуванні, а може, це була частина оновлення, яке ніколи не було добре задокументовано. На щастя, відключення могло нарешті бути скасовано, але на сьогодні ніхто не знає, хто його запрограмував і з якої причини.
Зараз Ларрі Зотареллі, останній оригінальний програміст команди "Вояджер", назавжди йде на пенсію. Ті, хто його замінять, зроблять все, що можливо, і вони впевнені, що FORTRAN вдосталь, але чи знатимуть вони, які сюрпризи ховаються в системі програмування зонда? Я не вірю цьому. Я використовую цю мову програмування з дев'яностих років і досі не знаю половини маси; але навіть знаючи посібник напам'ять, ніщо не гарантує, що в документі відсутні недокументовані хитрощі, помилки або вдосконалення.
На момент написання цієї статті космічний зонд "Вояджер-1" знаходився трохи більше 20,003 мільйонів кілометрів від Землі. І це все ще працює. Основне обмеження, з яким ви стикаєтесь, - це нестача енергії. Як я вже згадував у цій статті, до 2020 року навіть антени Мережі глибокого космосу НАСА не зможуть захопити ваші повідомлення.
Однак надія є. Ви можете провести "енергетичний аудит", щоб визначити точні вимоги до потужності кожного з ваших компонентів і встановити процедури відключення, все для того, щоб максимально використати наявну енергію. Для цього ви повинні знати, чому в 1970-х роках було прийнято певні інженерні рішення, який сенс було встановлювати вимоги до потужності бортових приладів та наскільки гнучкими ми можемо зробити ці вимоги. Чи справді цій підсистемі потрібно 3,2 Вт, чи достатньо 3, а решта - це запас міцності? Найкраще джерело знань для цього міститься в технічній документації та в мозгах її програмістів. Обидва зазнають невдачі через вікові причини: папери втрачені і спогади теж.
FORTRAN - це мова програмування, яка, як кажуть у Terminator Genesys, "стара, не застаріла". Інші мови, набагато крутіші за його часів, зникли. Я настільки переконаний у цьому, що пропоную вам зробити ставку: пиво, яке через двадцять років Java або PHP стане історією. Ви можете прийняти чи ні, але в будь-якому випадку ось порада для моїх друзів BOFH: добре тримайте свої посібники з програмування і дбайте про них, як про золото в тканині. У мене вже є своє.