Яка мова для запуску в Linux? [зачинено]


19

Я збираюся розпочати 4-річний ступінь інформаційної безпеки в Пердю. Ступінь не вимагає жодних курсів програмування. Тож єдиний раз, коли мені вдасться взяти один, це випадковий факультатив. Тож більшість мого навчання пройде самостійно. На початку мого старшого курсу середньої школи я вирішив повністю перейти на Linux. Поки я вивчив деякі матеріали Linux та безпеки. Однак я також вважаю, що для мене буде важливо також вивчити кілька мов програмування.

В основному я планую навчитися програмувати пліч-о-пліч із навчанням користуватися Vim. Тож, швидше за все, це буде повільний процес. Зрештою, я думаю, що це того варто. Як я вже говорив, я берусь за безпеку, тому я буду створювати додатки, пов'язані з безпекою, більшість з яких стосуватимуться мереж. Я також хотів би почати розробку додатків для Android, але це буде згодом по дорозі.

З урахуванням сказаного у мене є кілька ідей. Я думав почати з JavaScript, тому що це крос-платформа, і я бачив, як це пропонувалося раніше. Я також багато чув про Рубі або міг пройти природний маршрут Linux із С. У якому напрямку я повинен йти?

Відповіді:


53

Перше і головне: bashразом із загальними утилітами командного рядка. Bashє інтерфейсом користувача за замовчуванням до операційної системи, і багато програм в системі Linux будуть на певному рівні загорнуті в сценарій оболонки. Це може бути вигадливим, має деякі ідіосинкразії, і часто здається просто тупим, але це щось, з чим вам доведеться мати справу, тож заспокойтеся з цим. Стандартні інструменти , такі як grep, diff, head, tail, sort, uniq, і так далі, буде дуже корисно не тільки з допомогою сценаріїв оболонки, але з вашої продуктивності в командному рядку.

Дізнайтеся хоча б деякі c. Це те, про що написано найнижчі рівні системи, і це дасть вам краще розуміння системи в цілому.

Виберіть будь-яку мову вищого рівня, яка вам подобається. Python, ruby, perl, java, Що завгодно , - до тих пір , як вам подобається це. Тут ви по-справжньому починаєте вчитися "програмувати", і звідси далі буде легше набрати більше мов і продовжувати вчитися .


2
Я згоден з усіма переліченими тут пунктами.
Джо

6
Якщо ви збираєтеся вивчати баш, то вам слід включити вивчення про awk, sed, head, tail, cut, tr, diff, grep, find, ps, netstat, tcpdump, sort, uniq, etc., etc., etc., etc.
jftuga

2
@jftuga Погодився. Величезний відсоток мого набору інструментів - це навички робити "вилучення та інтеграцію даних" - фантазійний спосіб сказати "маніпулювання форматованими текстовими файлами". Після того, як ви зрозумієте конвеєр і ознайомитеся з загальними інструментами, ви не будете задоволені робочим процесом будь-якого попередньо прокатаного програмного забезпечення. Я також величезний шанувальник MS Powershell, який багато в чому стоїть на плечах Баша.
AndyN

@jftuga - зазначив. Хоча я думаю, що це важливо, я не думаю, що хтось, хто є новим для Linux, не повинен турбуватися про вивчення великих гармат, таких як sed / awk в глибину, але вони повинні мати достатньо розуміння, щоб мати можливість розшифрувати існуючий код, якщо вони повинні зіткнутися з ним .
JimB

8
Погодьтеся з усім, але я б рекомендував Python над іншими як мова високого рівня, зокрема, тому що він став найпоширенішою мовою вищого рівня для інструментів управління сервером. Ви натрапляєте на нього набагато частіше, ніж рубін або Java. Perl також поширений, тому що він такий старий, тому я б обрав цей наступний.
tylerl

10

Ви побачите, що кожен майже просто рекомендує свою улюблену мову. Моя улюблена мова - Perl, тому саме це я рекомендую. :) Однак, крім моїх особистих уподобань, є кілька чудових причин, чому вам варто подумати про використання perl:

По-перше, perl - чудова мова загального призначення. Початок роботи в perl легко, написавши прості сценарії, щоб робити ті самі види, що ви робите в скриптах оболонки, як маніпулювати файлами та приймати рішення на основі введення користувача. Це забезпечує дуже просте і поступове введення в загальні ідеї програмування. Perl існує довгий час, тому є багато ресурсів (книг та веб-сайтів) для початку роботи.

По-друге, perl - це надзвичайно потужна та виразна мова, яка підтримує всі сучасні функції програмування. Я використовую його вже більше п’ятнадцяти років, і я все ще вивчаю нові способи робити ефективніше. Наприклад, якщо ви хочете вивчити об'єктно-орієнтоване програмування, Perl має це (особливо через Moose ).

По-третє, Perl має майже нескінченну потужність та гнучкість свого офіційного сховища додатків, CPAN . Наприклад, щоб дотримуватися ідеї написання програмного забезпечення для безпеки, скажіть, що ви хочете розробити якийсь спеціальний сканер безпеки мережі. Замість того, щоб писати все це самостійно, ви можете почати з використання NMAP :: Scanner як двигуна сканування, а потім записати власні налаштування та вдосконалення.

Нарешті, якщо ви хочете вивчити веб-програмування, Perl також має це. Один з популярних сучасних способів написання веб-програмного забезпечення в Perl - це Catalyst , який забезпечує сучасну веб-структуру MVC для швидкої розробки будь-яких веб-додатків.

Переваживши все це разом, перевага perl полягає в тому, що він дозволяє починати писати невеликі сценарії та програми з невеликих командних рядків і поступово переростати в написання повнофункціональних сучасних додатків. Звичайно, ціна цієї гнучкості - це складність. Вам належить вивчити та навчитися робити речі правильно, Perl не застосовує належну практику, як це роблять інші мови. Мені особисто подобається ця свобода, особливо в поєднанні з усіма великими ресурсами в Інтернеті, щоб навчитися користуватися perl.


Perl - це (головним чином) сценарна мова; і більшість ОС програмується у C.
Chris S

Звичайно, але я не думаю, що це дуже важливо в контексті цього питання. Це не здається, що ОП дійсно хоче або потрібно дізнатися про програмування на рівні ОС.
Філ Холленбек

Я б припустив, що Perl - це хороший спосіб написати код для програми безпеки, яка націлена на щось, написане на іншій мові (часто на C), яку ви вже розумієте. Тому, якщо ця відмінність має сенс, я б класифікував Perl як інструмент, який ви повинні навчитися використовувати, а не як мову, яку ви повинні навчитися (повністю) розуміти.
BMDan

6

Три мови добре тримають вас. У порядку зменшення важливості (тобто перший є найважливішим):

  1. Псевдокод . Часто реалізація, з якою ви працюєте, буде об'єднанням півдесятка мов та інструментів, лише деякі з яких ви будете знати безпосередньо. Якщо ви знаєте, яка модель реалізована, однак, ви можете зрозуміти, який вхід подається фрагменту та який вихід він повинен дати, протестуйте його на виключення та з’ясуйте, чи не зламається той фрагмент.
  2. C . На краще або на гірше, це те, що керує всесвітом (Linux), і це дає вам достатньо близький до землі предмет, який ви можете зрозуміти, чим насправді займається будь-яка з мов вищого рівня (наприклад, PHP прохідна посилання або модель потоку Java).
  3. Тільки про що-небудь інше, крім C ++ . Функціональна мова, як SQL або, ще краще, Haskell, або щось не зовсім на зразок C-ey - якщо все інше не вдається, Java може працювати на це, але це все ще дуже процедурно - отримуйте високі оцінки тут; Ідея полягає в тому, щоб обернути свій мозок навколо чогось досить зовсім іншого, ніж те, що ви робили до цього, ви не можете не зрозуміти обмежень того, що ви робили раніше. З точки зору чистої корисності, bash, ймовірно, також належить до цього списку, але якщо ви не маєте основи в чомусь іншому, ви просто закінчите писати C з синтаксисом bash, замість того, щоб дійсно вивчити його силу.

1
+1 для псевдокоду. Мені подобається псевдокодувати в коментарях, а потім
кодувати

2
+1 для псевдокоду та "Все, крім C ++". У світі Linux ви повинні навчитися хоча б одному script language, як-от pythonабо PHP.
yegle

2
Я не знаю, чи псевдокод є гарною рекомендацією для початківців. Псевдокод стане зрозумілим після вивчення більшості будь-якої мови у стилі c, тому чи варто дійсно докладати зусиль для вивчення самого псевдокоду? Не кажучи вже про те, що немає єдиного синтаксису псевдокоду, який, швидше за все, бентежить початківця.
JimB

@JimB: Справа в тому, щоб навчитися мислити логічно, незалежно від мови. ERD, UML тощо - це інструменти башти із слонової кістки для цього, але вам не доведеться навчитися нічого такого формального. Ідея полягає в тому, щоб навчитися планувати свої думки, а потім порівнювати їх з очікуваним результатом. Коли ви зрозумієте, що, наприклад, у базі даних немає (притаманного) способу знати, які заголовки HTTP були надіслані як частина запиту на веб-сервер, ви можете усунути змінну з розгляду. Так само, коли ви пишете псевдокод для функції, ви часто помічаєте крайові та кутові регістри, у яких не було б інакше.
BMDan

Я погоджуюся повністю, я просто думаю, що вказівка ​​новачка на "псевдокод" призведе до плутанини, оскільки це не формальна річ. Псевдокод більшості людей стане об'єднанням мов у стилі c, яким вони є найзручнішими, а також деяким спеціальним синтаксисом.
JimB

4

Ви повинні вивчити кілька мов. Я б запропонував почати з Python. Це широко рекомендується для того, щоб бути легким у навчанні та бути дуже корисним, безліч чудових матеріалів для самостійного вивчення доступні безкоштовно, і я вважаю, що його широко використовують фахівці з ІТ-безпеки. Майже кожен раз, коли я бачу профі безпеки після демонстраційного коду, це Python.


+1 для python, а Python не тільки популярний у світі Linux.
Сяо

4

Я збираюся розпочати 4-річний ступінь інформаційної безпеки в Пердю. Ступінь не вимагає жодних курсів програмування.

Я єдиний, хто думає про OMG !!!! в цей момент?

Я також вважаю, що для мене буде важливо також вивчити кілька мов програмування

Я б сказав так. Хоча ви насправді не очікуєте стати досвідченим програмістом, вам, мабуть, потрібні навички, необхідні для імітації / відтворення атак та розуміння того, як працює процес програмування. Вам також знадобляться навички аналізу даних та витягування інформації з масових джерел (наприклад, журналів). JimB згадав bash - і хоча ви, без сумніву, будете користуватися цим, - на вивчення необхідних бітів потрібно лише пару годин. Насправді єдине місце, де ти колись можеш побачити баш, - це системи Linux, але інші оболонки дуже схожі.

Я рекомендую вивчити awk та / або Perl для стискання даних. Не переймайтесь будь-якою вимогою поставити галочку на об'єктно-орієнтований ящик - але я б рекомендував також переглянути непроцедурні язики.

Навчання C також відкриє вам багато інформації про те, як код перетворюється на виконувану програму (компіляція - це лише один крок у дуже складному процесі).

Очевидним вибором для когось, хто цікавиться розвитком Android / мобільних пристроїв, буде java - але java дуже намагається ізолювати розробника від того, щоб мати справу з реальністю операційних та протоколів - мій досвід, що саме тут у вас виникають проблеми з безпекою Java додатки. тобто це може допомогти вам досягти вашої кінцевої мети, і це буде добре виглядати у вашому резюме, але не сподівайтеся, що вивчення Java значно доповнить ваші знання про безпеку.


1
Ти не єдиний. : -o
Кіт

2

Моя порада:

  • bash(і її невірно) не є мовами програмування загального призначення. Хоча можна виконати деякі складні сценарії, bashце не найкращий спосіб навчитися програмуванню взагалі. Це найбільш природний спосіб виконання завдань системного адміністрування, які в основному обертаються навколо виконання інших програм, обробки їх файлів даних і каталогів, а також маршалінг введення та виведення в них і з них. Якщо bashце молоток, зарезервуйте його для проблем, які справді нагадують цвяхи. Навчитися робити що-небудь нетривіальне bashбуде значно простіше, якщо ви дізнаєтесь дуже невеликі підмножини sedта awk(оскільки маніпуляція з рядками в bashзначній мірі натхненна синтаксисом подібних операцій на цих "маленьких" мовах).
  • Для програмування загального призначення під Linux ви почуєте безліч захопливих аргументів. Два найкращих претендента - Перл і Пітон . Це обидві мови сценаріїв дуже високого рівня, які мають загальну мету, які виявляють достатню функціональність низького рівня для виконання практично будь-якої операції, доступної для будь-якого процесу простору користувача у вашій системі, а також доступні величезні колекції попередньо написаних модулів та бібліотек.

Я рекомендую вам прочитати вступний текст на C і провести деякий час запустивши straceі ltraceкоманди на кілька простих команд , утиліт , подібних lsі mkdirі /bin/echoт.д. ( на насправді в ці дні я хотів би запропонувати ltrace -Sзамість straceале набіги на виході з обох команд і в ltraceвихід як доповнені в -Sопції буде надзвичайно освітнім).

C - основна мова програмування, на якій написано ядро ​​Linux та GNU libc. (Невеликі деталі складаються). Практично всі програми в Linux (або іншій схожій на UNIX) системи пов'язані з бібліотеками C (libc). Основні інтерпретатори Perl та Python (і більшість інших мов скриптів) також написані у C. Ці програми (ядро, загальні системні бібліотеки та різні інтерпретатори мови скриптів) усі написані програмістами C, їх дизайн та особливості сильно впливають за їх основними реалізаціями. Таким чином, глибше розуміння будь-якого з них в кінцевому підсумку тягне за собою розуміння C. Вам не потрібно нічого знати про C ++ і Java, щоб зрозуміти програмування на цьому рівні. (Вони можуть бути цікавими і потрібними самі по собі залежно від вашої кар'єри,

Отже, якщо ви згодні з моїми приміщеннями поки що, ми звели це на вибір між Perl і Python.

Ось де починаються справжні вогняні війни.

Моя порада спочатку зосередитись на Python (2.x). Python має відносно простий і послідовний синтаксис. Ви можете вивчити основи синтаксису Python за кілька годин, і це переважна більшість синтаксису, з яким ви коли-небудь стикаєтесь. Існує лише декілька функцій (списки розумінь, вирази генератора, декоратори), які є зморшками до основного синтаксису. Тож більшість ваших зусиль у вивченні Python буде спрямовано на вивчення широких стандартних бібліотек та намагання знайти "найкращий" спосіб їх використання (і з'ясування, які конкретні набори винятків, з якими варто попрацювати, щоб зробити ваші програми міцними) і, найголовніше, у вивченні основних понять.

Я думаю, що великі бібліотеки Python і відносно простий синтаксис мають два чіткі недоліки.

По-перше, коли ви дізнаєтеся, як робити речі на дуже високому рівні в Python, вам може здатися, що думка про необхідність працювати на нижчому рівні буде втомливою. Де я працюю Perl - це стандарт. Я прототипую свою роботу в Python, де я знаю, що зможу працювати набагато швидше та надійніше, ніж у Perl; тоді я боявся пройти і перенести його на Perl для своїх колег. (Я був досить хорошим в роки Perl, перш ніж я коли-небудь використовував Python --- тому це не питання простого знайомства).

Інший недолік полягає в тому, що іноді важко знайти спосіб вищого рівня для виконання задачі в Python. Наприклад, щоб отримати веб-сторінку, ви можете спочатку спробувати це зробити з сокетами низького рівня ... що спрацює. Однак ви будете дублювати зовсім небагато коду, який ви вже можете знайти, в тому числі в модулях urllibта / або urllib2. Сам факт, що стандартні бібліотеки, станом на 2.7.1, включає обидва ці моменти. Там, де це можливо, керівники Python прозоро розширили старі модулі та API; однак є десятки випадків, коли Python зберігає два-три модулі, коли прозоре розширення чомусь неможливо. ( В якості іншого прикладу можна подивитися на варіанти для розбору параметрів командного рядка: argparse, optparseіgetopt. Немає шкоди для написання програм за допомогою getopt(найдавнішої з них). Для дуже простих утиліт з малою кількістю опцій і жорсткої конвенції про виклики (використовувану, наприклад, лише невеликою групою людей), в цьому немає нічого суттєвого поганого в тому, щоб переходити над sys.argvсобою. Однак, як правило, варто уважно прочитати документи та дотримуватися посилань на дні старих або нижчих рівнів модулів, які описують доступні новіші та вищі функції.

Моя порада заснована на моїй думці, що ви хочете зосередитись на більш глибоких поняттях і не потрібно витрачати багато свого часу і сил на синтаксичні та мовні конкретні питання. Розуміння, коли використовувати підпроцес, проти потоку або функції багатообробної обробки, що входять до програми Python, має відносно мало спільного з мовою, і все, що стосується вміння програмування незалежно від мови. (У той момент, коли ви можете зрозуміти аргументи щодо моделі, що керується подіями Twisted, порівняно з потоком і багатопроцесорною, тоді ви, мабуть, освоїли Python і будете готові програмувати на будь-якій мові).

Протилежний аргумент для Perl простий і практичний. Існує ще декілька робочих місць, які вимагають, зокрема, навичок роботи з Perl. Perl - потужна мова і має надзвичайно великі бібліотеки. (Ядро Perl, яке розповсюджується в більшості систем Linux, охоплює менший діапазон функціональності, ніж стандартні бібліотеки Python; передбачається, що ви встановите значну кількість додаткових пакетів з вашого дистрибутива або через CPAN --- Всебічний архів Perl Мережа). (Навпаки, є менша кількість модулів і пакетів Python, які мені доведеться отримати окремо ... вони доступні в PyPI --- індексі пакета Python).

Тож, якщо ви навчитеся Perl, у вас буде короткий строк для пошуку роботи, особливо роботи з системою адміністрації. Однак синтаксис Перла - це ... ну ... на словах деяких його власних ентузіастів ... "патологічно еклектичний!" Perl може бути надзвичайно лаконічним, і його код наповнений зовсім небагато пунктуацій. Ті, хто любить це, будуть нескінченно стверджувати, що це "просто" і має ідеальний сенс --- і матимуть нескінченні можливості зробити це на форумах, наповнених плутаниною щодо того, як саме трактувався даний фрагмент коду. Синтаксис та мова, які використовуються в документації, та тими, хто її підтримує на публічних форумах, нюансують до того, що ви можете витратити чимало зусиль на їх вивчення.

Тепер, будь ласка, зрозумійте, що цей попередній коментар є суб'єктивним та упередженим. Можливо, ви спробуєте Perl і виявите, що його синтаксис є інтуїтивним та приємним. Якщо так, то більше влади вам. Однак я особисто вважаю, що моє розуміння ідіосинкразії Перла занепадає дуже швидко. Основи, які я зберігаю, але я вважаю, що це боротьба, коли мені доводиться переходити до неї більше ніж кілька рядків коду.

Є багато інших мов, які ви вивчали б, Java, Lisp та Scheme, TCL, Scala тощо. Однак я б запропонував розпочати з того, який пропонує найкращий баланс між корисністю та простотою.


1

У світі Linux слід знати дві основні речі:

  1. Regular Expression. Це обов’язково. RegExє універсальною «мовою», як тільки ви зможете використовувати регулярне вираження, ваше життя стане набагато простішим :-)
  2. " quick & dirty" є дуже поширеним у світі Linux. Якщо ви можете виконати свою роботу, незалежно від того, наскільки негативним є ваше рішення, ви виконали свою роботу.

Отже, якщо ви хочете вивчати мову на Linux, ви ПОВИННІ вибрати script language, як python, PHPабо навіть bash scripting.

І, моя рекомендація є PHP. Це просто і некрасиво. У ньому є докладний онлайн-посібник . Він має гарну RegExпідтримку. Це все.


2
Це має бути найкращим описом PHP, який я коли-небудь чув ... Коли ви знімаєте популярність, за нею залишилося не так багато: P
Гордон Густафсон,

Трохи поза темою, але я думаю, що головна причина популярності PHP - це багато функцій, які були б розкидані по багатьох лінкерних бібліотеках / пакетах іншими мовами, які є стандартними для PHP (трохи схоже на поєднання більшості речей, які вам коли-небудь знадобляться в libc)
Філ Лелло

1

Ви можете виконати практично будь-яке завдання майже будь-якою мовою, тому правильний вибір багато в чому продиктований проблемою, яку ви вирішуєте.

Однозначно варто знати мови з таких категорій:

  • Складені мови (наприклад, C / C ++ / Java). C / C ++ - це гарне місце для вивчення проблем безпеки із переповненням буфера, пошкодженням стека тощо.
  • Інтерпретовані мови (як PHP). Хороше місце для вивчення проблем зі змінними типовими змінними та не виявлення невизначених функцій, поки ви не викликаєте їх
  • Мови скриптування (sh / bash / csh / ksh). Дійсно корисно для склеювання багатьох корисних утиліт оболонки (див. / Bin & / usr / bin) разом

Я б доклав зусиль для вивчення C / C ++, оскільки це дозволяє пошкодити стек та прямий доступ до пам'яті. Це важливо, якщо ви хочете експериментувати з проблемами безпеки. Багато мов мають C-подібний синтаксис (включаючи JavaScript), тому це хороший трамплін.

Якщо ви багато працюєте в оболонці, що, напевно, ви вивчаєте vim, ви в кінцевому підсумку вивчите основні сценарії оболонки як побічний ефект. UNIX Power Tools - це хороша книга для вивчення більш досконалих матеріалів; Я не знаю, чи все ще опубліковано.

PHP також може бути хорошою мовою для вивчення; Основна перевага, яку він пропонує новим програмістам, полягає в тому, що вбудовано багато функціональних можливостей, а не в бібліотеці, до якої потрібно було б зв’язатися (що не є складною задачею). Через це перегляд основних документів навчить вас про багато речей.


1

Спочатку кілька негативних порад:

В основному те, що я планую робити - це навчитися програмувати пліч-о-пліч, навчившись використовувати Vim.

Не роби цього. Знайдіть редактор, який дійсно комфортний. Вивчення мови та редактора втричі настільки ж важке, як вивчити їх для того, щоб (як правило, редактор повинен перейти спочатку :-))

Як я вже говорив, я берусь у безпеку, тому буду створювати додатки, пов'язані з безпекою. Більшість з них буде стосуватися мереж.

Мережі, пов’язані із програмами безпеки? C - це не вибір мозку. Вам потрібно буде отримати доступ до мережі на рівні системного API, а це означає, що C - це шлях. Звичайно, це не означає, що все повинно бути в С - бібліотека С + $favorite-high-level-languageобгортка може врятувати вас, пов'язані з С, клопотів у частинах, які не потребують С.

З урахуванням сказаного у мене є кілька ідей. Я думав почати з JavaScript, тому що це крос-платформа, і я бачив, як це пропонувалося раніше.

Надіюсь, це було запропоновано в контексті, відмінному від вашого. JavaScript має свої сильні сторони, але поки це не є хорошою загальною мовою. JS не має стандартних бібліотек, порівнянних з доступними для C, Python, Perl, Ruby, Java & company.

Якщо говорити $favorite-high-level-language- моя порада - поїхати з Python. Він добре поєднується з C, він постачається з великою кількістю корисних бібліотек і має набагато більше бібліотек, доступних як додатки.


0

Нічого не поганого в навчанні Javascript, але він працює лише під браузером, тому ваше програмування буде обмежено додатками, пов’язаними з веб-сторінками.

Напевно, існує стільки ж відповідей на тему "з чого добре починати мову програмування", скільки є мов. Моя ціна в тому, що ви можете зробити гірше, ніж починати з базових сценаріїв оболонок, просто бачачи, що ви можете зробити для автоматизації завдань, не використовуючи нічого, крім оболонки, а потім розширити цю програму за допомогою Perl або подібної мови, що виросла з необхідності робити. завдання, складніші, ніж оболонка здатна, після цього, і якщо вам справді цікаво, це займе лише кілька тижнів, почніть використовувати C або похідну.


3
Лише в браузерах? Не більше .
EEAA

Дякую, я виправданий, але я все ще не рекомендував би Javascript як навчальне середовище, для початківців отримання підтримки для не-браузерних версій було б кошмаром.
Бланк про

2
Я завжди вважав, що ECMAScript є мовою програмування, і Javascipt сидить поверх ECMAScript, щоб забезпечити корисні функції для управління DOM. Javascript призначений для браузера.
Джонатан Мейхак

0

Мої рекомендації? Хммм. Ну, можливо, вам доведеться вирішити, як їдете. Для здорового, добре закругленого діапазону ви можете піти звичайним маршрутом CS градусів, можливо, не в такому порядку.

(1) C / C ++ - Ви можете знизити об'єктно-орієнтовані речі, принаймні, ви спробували. C ++ - це "професійний" стандарт. (2) Збірка (лише на трохи - це допоможе вам зрозуміти реальну роботу процесора, пам'яті тощо. - Вам не доведеться за це одружуватися.) (3) Python / Perl / Bash - Отримайте ці знижуючи мови написання, вони стануть найбільш корисними для вашого рівня Linux (4) PHP / Ruby, MySQL та HTML - Просто ввімкніть веб-програмування! Ви зрозумієте весь процес взаємодії сервер-клієнт, інший рівень обчислень.

Потрібні корисні концепції? ШІ, нейронні мережі. Вони повинні вас округлити.

Ви можете вибрати одне із них, щоб зробити, або торкнутися всіх. Моя мова? Усі вони, якщо потрібно, але я програмую з 1984 року, маю ступінь CS, написані ігри та всі види вбудованих системних додатків. Це я і роблю. Вам потрібно з’ясувати, хто ви є і чим ВАМ. Просто переконайтеся, що вам весело.

Насолоджуйтесь!


0

ой, неправильно прочитана інформаційна безпека для інфо-систем ... о, ну, більшість цього все ще стосується

Java

  1. Повинно бути курс програмування початкового рівня, який базується на вашій школі. Завжди приємно отримувати кредити за речі, які ви навчаєте.
  2. Це дасть вам певний ріст у кар’єрі, якщо ви захворієте на строго системного хлопця ... або якщо компанія, з якою ви працюєте пізніше, вирішить, що системи схожі на тостери, а також люди, які ними керують.
  3. Об'єктно-орієнтована
  4. Ви сказали, що хочете зайнятися розробкою Android. Це означатиме Java.

Чесно кажучи, якщо ви працюєте в Linux і перебуваєте на початковому курсі програмування на Java, а потім, можливо, продовжите ще кілька курсів програмування, інші інструменти, такі як Bash sed / awk, і т. Д. ..., повинні якось стати на місце. Якщо ви дійсно потрапляєте в системи, ви можете піти трохи C пізніше, але я б не сказав, що це дуже затребуваний, і я навіть не сказав би, що це вимога бути хлопцем із систем - якщо ви справді не входите в службовці.

YMMV

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.