На що пишуть в nasa

Питання: в NASA пишуть на Python'е?

коротка відповідь

NASA не використовує Python для реалізації якихось серйозних проектів, що стосуються польотів або доставки військового призначення. Однак є деякі проекти, в яких використовується Python: частково в математичних розрахунках, в яких параметри польоту враховуються в незначній мірі. Крім того, я думаю, вам вдалося б виявити його в деяких одноосібних проектах або в якості заміни shell-скриптів і Perl'а.

Довгий (і більш цікавий) відповідь від інсайдера

І хоча кожен може писати на тому, на чому йому зручно, більшість використовують C, багато менше працівників пишуть на C ++ і вже зовсім мало - на Java. Абсолютна меншість використовують ADA, Fortran і Lisp. Assembler використовується, коли мова йде про необхідність оптимізації або драйвері. Для моделювання, як мінімум в JPL, більшість підтримують MatLab, але є й ті, хто використовують Mathematica (підозрюю, що хтось користується навіть Maple, але особисто я таких людей ще не зустрічав). В цілому, ні в якому проекті навіть середнього масштабу не використовуються скриптові мови, і вже тим більше, Python, Ruby, Perl і інші, тому що ці проекти повинні задовольняти деяким вимогам.

Прихильність C не позбавлена ​​сенсу. Всі великі проекти організації обов'язково пишуться на C. Наприклад, код для марсоходів написаний на C з єдиним винятком у вигляді Gestalt, програмного забезпечення для візуальної навігації, написаному на C ++. Звичайно, не позбавлена ​​сенсу і розробка ПО на іншій мові, але при цьому цей код повинен бути легко портіруем на основну мову. На ньому ж написано і драйвера для всього комерційного обладнання. З швидкий, для нього існує безліч якісних бібліотек, він дозволяє писати на дуже низькому рівні, «ближче до заліза», що дуже корисно. Величезним плюсом є і те, що є багато компіляторів, які дотримуються стандарту C. Наприклад, якщо ви користуєтеся, gcc, то в силу суворості правил генерації коду, ви можете бути впевнені, що програма буде виконуватися однаково на абсолютній більшості машин. Про інших мовах не можна сказати того ж. Зокрема, я не беруся стверджувати, що мало компіляторів C ++ підтримують стандарт мови, але кілька років тому це було саме так.

На мою скромну думку, новим людям варто робити вибір на користь C ++, тільки якщо вони готові змиритися з певними обмеженнями, а в такому випадку, має сенс все ж поглянути на C під іншим кутом зору. Більшість кодів на C ++ обмежуються ще і ресурсами: в проектах космічних польотів надзвичайно важливо економити енергію і пам'ять, як оперативну, так і довготривалу. Пройшли ті часи, коли військові і космічні організації володіли провідними виробництвами чіпів та іншого заліза, тепер їх змінили цивільні виробники товарів широкого споживання. Звичайно, вони чудово підходять для персональної техніки, але ж мова йде про роботу у відкритому космосі, для них необхідно використовувати захищені від радіації матеріали. В результаті менеджерам доводиться вибирати обладнання, яке сильно поступається обладнанню ПК звичайних користувачів. Так, наприклад, в MER'ах встановлені чіпи з частотою 20 MHz і DRAM в 128 MB. Мій ноутбук, якому вже чотири роки, в 100 разів швидше (2,4GHz) і має в 32 рази більше пам'яті (4GB). А вже порівнювати обсяг мого HDD на 1 TB з об'ємом, що надається космічному обладнанню, зовсім не доводиться. Так що, думаю, ви розумієте, чому рідко робиться вибір на користь C ++, згенерований код на якому не славиться малими розмірами. А згадайте про шаблони стандартної бібліотеки, які використовують в процесі роботи величезна кількість цінного ресурсу - оперативної пам'яті. У той же час, код C дуже лаконічний.

До того ж, у C ++ є ще один недолік: програми на ньому можуть вести себе непередбачувано, код на C ++ складно обслуговувати. Ви можете сказати, що використовуєте тільки базові функції мови, і тому насправді не вийдете за рамки чистого C. Якщо ви скористаєтеся якимось додатковими можливостями мови, то доведеться шукати спеціальних людей, які займуться налагодженням коду і управлінням обладнання, для якого ця ПО написано.

Давайте розглянемо такий приклад. Нехай інженер займається, наприклад, антенами. Йому не потрібно знати C ++: вся його робота полягає в тому, щоб змусити працювати антену без збоїв, швидко і якісно. Тому в якості мови для написання драйвера він швидше вибере чистий C. І написаний ним код може бути легко вивчений іншими інженерами, яким рівно також немає сенсу створювати ПО на C ++. І така ж історія повторюється у всіх сферах діяльності контори: від пожежної безпеки до стиснення зображень. Так, не можна заперечувати, що C ++ - чудова мова, і не дивно, що його використовують при створенні досить складних додатків, але в справі проектування польотів він не може скласти C серйозну конкуренцію.

Схожі статті