Какой язык для запуска в Linux? [закрыто]

19

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

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

С учетом сказанного у меня есть несколько идей. Я думал начать с JavaScript, потому что он кроссплатформенный, и я уже видел это раньше. Я также много слышал о Ruby или мог бы пойти естественным путем Linux с C. В каком направлении мне идти?

JD Davis
источник

Ответы:

53

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

Выучи хоть немного c. Это то, на чем написаны самые низкие уровни системы, и это даст вам лучшее понимание системы в целом.

Выберите любой язык более высокого уровня, который вам нравится. Python, ruby, perl, java, Независимо от - до тех пор , как вам нравится это. Это то место, где вы действительно начинаете учиться «программировать», и с этого момента вам будет легче выбирать больше языков и продолжать учиться .

JimB
источник
2
Я согласен со всеми пунктами, перечисленными здесь.
Джо
6
Если вы собираетесь изучать bash, вам следует узнать о awk, sed, head, tail, cut, tr, diff, grep, find, ps, netstat, tcpdump, sort, uniq и т. Д. И т. Д. И т. Д. И т. Д.
Jftuga
2
@jftuga Согласен. Огромный процент моего инструментария составляют навыки «извлечения и интеграции данных» - причудливый способ сказать «манипулирование отформатированными текстовыми файлами». Как только вы поймете конвейер и познакомитесь с общими инструментами, вы будете свободны от рабочего процесса любого готового программного обеспечения. Я также большой поклонник MS Powershell, который во многих отношениях стоит на плечах Bash.
AndyN
@jftuga - отметил. Хотя я думаю, что это важно, я не думаю, что кто-то новичок в Linux должен беспокоиться о глубоком изучении больших пушек, таких как sed / awk, но у них должно быть достаточно понимания, чтобы иметь возможность расшифровать существующий код, если он столкнется с ним ,
ДжимБ
8
Согласен со всеми, но я бы рекомендовал Python над остальными как язык высокого уровня, особенно потому, что он стал наиболее распространенным языком высокого уровня для инструментов управления сервером. Вы столкнетесь с этим гораздо чаще, чем с ruby ​​или 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.
Крис S
Конечно, но я не думаю, что это имеет большое значение в контексте этого вопроса. Не похоже, что ОП действительно хочет или нуждается в изучении программирования на уровне ОС.
Фил Холленбек
Я бы предположил, что Perl - это хороший способ написать код для приложения безопасности, предназначенного для чего-то написанного на другом языке (часто C), который вы уже понимаете. Поэтому, если это различие имеет смысл, я бы классифицировал Perl как инструмент, который вы должны научиться использовать, а не как язык, который вы должны научиться (полностью) понимать.
BMDan
6

Три языка помогут вам в этом. В порядке убывания важности (т. Е. Первое является наиболее важным):

  1. Псевдокод . Часто реализация, с которой вы работаете, представляет собой смесь полдюжины языков и инструментов, только некоторые из которых вы будете знать напрямую. Однако если вы знаете, какой шаблон внедряется, вы можете выяснить, какой ввод передается к фрагменту и какой вывод он должен дать, протестировать его в исключении и выяснить, является ли этот фрагмент разрушающим.
  2. C . Что бы там ни было, это то, что управляет вселенной (Linux), и дает вам достаточно полное представление о вещах, которые вы можете понять, что на самом деле делает любой из языков более высокого уровня (например, PHP). передача по ссылке или модель потока Java).
  3. Почти все остальное, кроме C ++ . Функциональный язык, такой как SQL или, еще лучше, Haskell, или что-то не совсем такое, как C-ey - если ничего не помогает, Java может работать для этого, но он все еще очень процедурный - получить здесь высокие оценки; Идея заключается в том, чтобы обернуть свой мозг чем-то совершенно отличным от того, что вы делали раньше, и вы не можете не осознавать ограничения того, что вы делали раньше. С точки зрения чистой полезности, bash, вероятно, также входит в этот список, но если у вас нет основы в чем-то другом, вы просто в конечном итоге напишите C с синтаксисом bash, вместо того, чтобы по-настоящему исследовать его возможности.
BMDan
источник
1
+1 для псевдокода. Мне нравится псевдокодировать в комментариях, а затем кодировать вокруг комментариев
sreimer
2
+1 для псевдокода и «Все остальное, кроме C ++». В мире Linux вы должны выучить хотя бы один script language, как pythonили PHP.
Yegle
2
Я не знаю, является ли псевдокод хорошей рекомендацией для новичка. Псевдокод будет понятен после изучения большинства языков c-style, так что стоит ли прилагать усилия для изучения самого псевдокода? Не говоря уже о том, что нет единого синтаксиса псевдокода, который может запутать новичка.
ДжимБ
@JimB: Дело в том, чтобы научиться мыслить логически, независимо от языка. ERD, UML и т. П. - это инструменты для создания башни из слоновой кости, но вам не нужно изучать что-то столь формальное. Идея состоит в том, чтобы научиться составлять свои мысли и сравнивать их с ожидаемым результатом. Когда вы поймете, что, например, база данных не имеет (присущего) способа узнать, какие заголовки HTTP были отправлены как часть запроса на веб-сервер, вы можете исключить переменную из рассмотрения. Точно так же, когда вы пишете псевдокод для функции, вы часто обнаруживаете крайние и угловые варианты, которые вы не сделали бы иначе.
BMDan
Я полностью согласен, я просто думаю, что указание новичку на «псевдокод» вызовет путаницу, поскольку это не формальная вещь. Псевдокод большинства людей будет объединением языков c-стиля, в которых они наиболее удобны, плюс некоторый специальный синтаксис.
ДжимБ
4

Вы должны выучить несколько языков. Я бы предложил начать с Python. Его широко рекомендуют за то, что он прост в освоении и очень полезен, множество отличных материалов для самостоятельного обучения доступно бесплатно, и я полагаю, что они широко используются профессионалами в области ИТ-безопасности. Почти каждый раз, когда я вижу, что профессионалы в области безопасности после демонстрации кода, это Python.

bgvaughan
источник
+1 для Python, и Python не только популярен в мире Linux.
Сяо
4

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

Я единственный, кто думает, OMG !!!! в этот момент?

Я также считаю, что для меня будет важно выучить несколько языков программирования.

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

Я бы порекомендовал изучить awk и / или Perl для обработки данных. Не беспокойтесь ни о каком требовании пометить объектно-ориентированный блок - но я бы порекомендовал взглянуть и на непроцедурные языки.

Изучение C также предоставит вам много информации о том, как код превращается в исполняемую программу (компиляция - только один шаг в очень сложном процессе).

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

symcbean
источник
1
Ты не один. : -o
Кит
2

Мой совет:

  • bash(и тому подобное) не являются языками программирования общего назначения. В то время как возможно выполнить некоторые сложные сценарии, bashэто не лучший способ изучить программирование в целом. Это наиболее естественный способ выполнения задач системного администрирования, которые в основном связаны с выполнением других программ, обработкой их файлов данных и каталогов, а также распределением входных и выходных данных в них и из них. Если bashэто молоток, зарезервируйте его для задач, которые действительно похожи на гвозди. Научиться делать что-нибудь нетривиальное в bashбудет значительно легче, если вы выучите несколько очень маленьких подмножеств sedи awk(поскольку манипулирование строками в bashзначительной степени основано на синтаксисе подобных операций в этих «маленьких» языках).
  • Для программирования общего назначения под Linux вы услышите много страстных аргументов. Двумя лучшими претендентами являются Perl и Python . Это скриптовые языки очень высокого уровня общего назначения, которые предоставляют достаточно низкоуровневую функциональность для выполнения практически любой операции, доступной для любого пользовательского пространства процесса в вашей системе, и с огромными коллекциями предварительно написанных модулей и библиотек.

Я рекомендую вам прочитать вводный текст на языке C и потратить некоторое время на выполнение команд straceand ltraceдля некоторых простых служебных команд, таких как lsand 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 может быть очень кратким, и его код заполнен пунктуацией. Те, кто любит это, будут бесконечно утверждать, что это «легко» и имеет смысл - и у них будут бесконечные возможности сделать это на форумах, которые полны путаницы в том, как именно интерпретируется данный фрагмент кода. Синтаксис и язык, используемый в документации, а также теми, кто поддерживает его на публичных форумах, детализированы до такой степени, что вы можете потратить значительные усилия на их изучение.

Теперь, пожалуйста, поймите, что этот предыдущий комментарий субъективен и предвзят. Возможно, вы попробуете 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поддержку. Это все.

yegle
источник
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.

Не делай этого. Найдите редактор, который действительно удобен. Изучение и языка, и редактора в три раза сложнее, чем изучение их по порядку (очевидно, редактор должен идти первым :-))

Как я уже сказал, я займусь безопасностью, поэтому буду создавать в основном приложения, связанные с безопасностью. Большинство из которых будут связаны с сетью.

Связанные с сетью приложения безопасности? С здесь нет легкого выбора. Вам нужно будет получить доступ к сети на уровне системного API, что означает, что C - это путь. Конечно, это не означает, что все должно быть в C - библиотека C + $favorite-high-level-languageоболочка может избавить вас от проблем, связанных с C, в частях, которые не нуждаются в C.

С учетом сказанного у меня есть несколько идей. Я думал начать с JavaScript, потому что он кроссплатформенный, и я уже видел это раньше.

Могу поспорить, что это было предложено в контексте, отличном от вашего. У JavaScript есть свои сильные стороны, но пока он не является хорошим языком общего назначения. JS не имеет стандартных библиотек, сравнимых с библиотеками C, Python, Perl, Ruby, Java и компании.

Кстати, $favorite-high-level-languageмой совет - пойти с Python. Он прекрасно взаимодействует с C, поставляется с большим количеством полезных библиотек и имеет гораздо больше библиотек, доступных как дополнения.

Рафал Доугирд
источник
0

Нет ничего плохого в изучении Javascript, но он работает только под браузером, поэтому ваше программирование будет ограничено приложениями, связанными с веб-страницами.

Вероятно, существует столько же ответов на вопрос «с чего начать хороший язык программирования», сколько существует языков. Мое преимущество состоит в том, что вы могли бы сделать хуже, чем начинать с базовых сценариев оболочки, просто посмотреть, что вы можете сделать, чтобы автоматизировать задачи без использования чего-либо, кроме оболочки, а затем расширить это с помощью Perl или аналогичного языка, который вырос из необходимости делать задачи, более сложные, чем способная оболочка, после этого, и, если вы действительно заинтересованы, это займет всего несколько недель, начните использовать C или производную.

blankabout
источник
3
Только в браузерах? Не Anymore .
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 - просто включите свое веб-программирование! Вы поймете весь процесс взаимодействия сервер-клиент, другой уровень вычислений.

Нужны полезные концепции? AI, нейронные сети. Это должно окружить вас.

Вы можете выбрать один из них или коснуться всех из них. Мой язык? Все они, по мере необходимости, но я программирую с 1984 года, и у меня есть степень CS, написанные игры и всевозможные приложения для встроенных систем. Это то, что я делаю. Вам необходимо выяснить, кто вы и чем занимаетесь. Просто убедитесь, что вам весело.

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

Скотт Фулк
источник
0

упс, неверно истолкована информационная безопасность для информационных систем ... да ладно, большая часть этого все еще применяется

Джава

  1. Должен быть курс программирования начального уровня, основанный на Java, который будет учитываться в вашей степени. Всегда приятно получать кредиты за то, что вы изучаете.
  2. Это даст вам некоторый карьерный рост, если вам надоест быть системным парнем ... или если компания, с которой вы работаете позже, решит, что системы подобны тостерам, и люди, которые ими управляют.
  3. Объектно-ориентированный
  4. Вы сказали, что хотите заняться разработкой для Android. Это будет означать Java.

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

YMMV

MLH
источник