Какие функции сценариев оболочки актуальны для разработки на PHP / Python? [закрыто]

28

Я программист на PHP / Python, изучаю Java и C # (.NET).
Моя основная операционная система - Windows 7, но я использую Linux, и в настоящее время я использую Ubuntu с двойной загрузкой. Мои знания Linux, однако, довольно ограничены. Я могу работать с командной строкой над простыми задачами, но это почти все. Я не делаю сценариев оболочки и не знаю много важных команд.

Я заинтересован в веб-разработке, мобильных приложениях и, возможно, в будущем. Будут ли полезны навыки сценариев оболочки для этих интересов, и если да, то как?

Maxtor
источник
9
Кто бы ни сказал мне 5 лет назад: «Настоящие мужчины свободно говорят на C ++, настоящие мужчины используют командную строку и загружают свой Linux с образа дискеты» - fvck you! Я хочу сказать им, что «настоящие мужчины» используют свою голову и выбирают лучший инструмент, который они могут найти для работы. Они также умеют веселиться в жизни вне работы. Дамы, извините за мужественный ответ. Под «мужчинами» я подразумеваю программистов, но в то время это не так.
Работа
3
Тот, кто начинает спорить с «Настоящими мужчинами», либо шутит, либо полон дерьма. Тем не менее, идиоты, подобные этому, не должны умалять ценность понимания того, что вначале кажется сложным, программирование оболочки и перетаскивание элементов GUI часто чертовски эффективнее. И если определенные факторы, ориентированные на C ++, абсолютно необходимы, то C ++ - это путь. (т. е. высокая производительность, или, что более важно, использование библиотеки C или C ++ / существующей кодовой базы ... и т. д.) - в основном, если вы не прагматичны, забудьте об этом направлении работы.
ocodo
6
@Slomojo: Настоящие мужчины любят своих жен и детей и хорошо к ним относятся. ;)
Мейсон Уилер
@ Мейсон, ты принц, сэр.
ocodo
1
PHP / Python часто разворачивается на блоках Linux, так как они дешевле, чем на блоках Windows. Следовательно, если вам нужно ухаживать за ними, вы лучше узнаете, как все работает и что вы делаете.

Ответы:

35

Если я пишу приложение для Windows (или приложение для Mac), зачем мне знать Linux? Должен ли механик Ford знать тракторы John Deer? Все зависит от того, что вы делаете, профессионально или от своего «хобби».

Теперь не больно это знать. На самом деле, я твердо верю в то, что "чем больше знаешь, тем лучше для тебя"

Муад'Диб
источник
Причина, по которой я спрашиваю, заключалась в том, что в наши дни Linux считается обязательным для обучения программистам всех типов. Однако я могу ошибаться.
Maxtor
@ Макс: это сделает вас умным, только если вы знаете, как его использовать и знаете, как и почему Linux это делает. Исходный код Linux содержит в себе обширные знания, но, как сказал Муад, он НЕ ДОЛЖЕН.
Компьютерщик
1
Ему нужно будет изучать Linux, если он когда-нибудь рассчитывает самостоятельно развернуть свои программы в производственной среде, которая может быть в большинстве случаев Linux.
Dukeofgaming
@dukeofgaming, вы можете запустить IIS и PHP без проблем. linux было бы ХОРОШО учиться, но нужно? на самом деле, нет.
Муад Диб
@dukeofgaming Мне никогда не приходилось развертывать свои приложения ASP.NET на сервере Linux, и я сомневаюсь, что когда-нибудь это сделаю!
Кирк Бродхерст
29

Если вы программист PHP, вы обязательно должны знать Linux. PHP был создан на Linux, и PHP является важной частью стека LAMP: Linux + Apache + MySQL + PHP. Даже если у вас есть возможность разрабатывать для серверов Windows сейчас, ваша следующая работа, вероятно, будет посвящена разработке для серверов Linux, и вам нужно быть знакомым со средой Linux, чтобы не сталкиваться с определенными для Windows 'isms PHP.

В пространстве мобильных приложений знание того, что Linux (к сожалению) будет иметь мало отношения к средам, для которых вы разрабатываете. iPhone OS не имеет ничего общего с Linux, а Android настолько сильно ограждает вас от виртуальной машины, что вы никогда не узнаете, что Linux под вами. Вы можете программировать для Linux на Meego или Maemo, но они не имеют ничего общего с популярностью iPhone и Android.

Во встроенном пространстве вы должны знать Linux. Встроенные Windows встречаются редко, но встроенные Linux довольно распространены. (Конечно, встроенное программирование на голом металле также довольно распространено, поэтому оно зависит от того, куда вы хотите пойти.)

Если вы будете изучать Linux в течение нескольких лет, у вас будет некоторый уровень понимания каждой части системы от ядра, через процесс загрузки, вплоть до командной строки и GUI.

Кен Блум
источник
3
Я согласен, что встроенный Linux довольно распространен для 32-битных устройств. Однако большинство встроенных микросхем все еще 8- и 16-битные, которые не могут работать под Linux. (Вы упомянули об этом в своем «голом металлическом» комментарии, я просто поясню немного.) 32-разрядные устройства - самый быстрорастущий сегмент.
tcrosley
+1 для стека LAMP и встроенного пространства. Буду признателен за рекомендации по этой теме для начинающих программистов Unix / Linux.
Энтони
17

Существует определенная степень мышления 80/20, которую вы можете подать здесь. На самом деле не требуется много времени, чтобы изучить основы работы Linux и основные команды, которые вам нужно знать из командной консоли. Аналогично, базовая конфигурация Apache очень удобна, если вам это нужно. Вам не нужно посвящать этому годы своей жизни, но, безусловно, стоит изучить достаточно основ, которые вы могли бы получить, запустив собственный сервер, если бы вам пришлось.

Это тонкая грань, хотя. Если вы не будете осторожны, вы сможете быстро обнаружить, что Windows начинает действительно отмечать вас, когда вы привыкаете к тому, что предлагает Linux ...

glenatron
источник
12
+1 - не учите Linux, если вы хотите продолжать получать удовольствие от использования Windows.
Mongus Pong
6
+1 - [смущенно поднимает руку] Гм. Меня зовут Инамати ... и я бывший пользователь Windows.
Инамати
6

Вам не нужно изучать это, но это сделает вас лучшим программистом. Вы узнаете, как делать вещи иначе, чем Windows. Использование любых оболочек * sh в конечном итоге приведет к созданию сценариев и использованию регулярных выражений, автоматизации установок, синтаксическому анализу больших файлов и т. Д.

Меня не волнует, что меня не знают, так же как меня волнует то, как это круто каждый раз, когда я учусь делать что-то еще в Linux. Это становится все лучше и лучше с каждым новым битом.

У Powershell есть многое из мира nix, и они наконец-то поняли, что для автоматизации вам нужна хорошая консоль (спасибо MS за это). И Perl, и Python, похоже, представляют собой смесь C, bash, sed, awk, все по-своему хорошо слиты воедино.

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

Я уверен, что вы сами найдете вещи, которые заставят вас уйти: «Вау, это так круто!» Первым делом я смог «убить» Apache с помощью сигнала USR1, чтобы он перезагрузил новый файл конфигурации и перезапустил журналы, не останавливая службу и не продолжая получать соединения. Также ssh и rsync, черт возьми, почему бы MS портировать их не по мне.

Marlon
источник
+1 За то, что МС движется в направлении скорлупы и отсутствие этого полностью!
Orbling
4

Это не повредит тебе. Даже во всей компании Microsoft становится все более вероятным, что вы столкнетесь хотя бы с несколькими серверами Linux. Например, Stack Overflow использует Linux для балансировки нагрузки. Это особенно верно, когда виртуализация вступает в игру.

Как программист, вы могли бы добиться большего, подумав о знакомстве с POSIX, а не с одним UNIX-подобным вариантом. Несмотря на то, что у него есть некоторые странности, он представляет собой огромные усилия, приложенные к невероятной попытке установить стандартный интерфейс, который (в основном) переносим во всех средах, подобных UNIX. Обратите внимание, что многие UNIX-подобные системы не являются на 100% «правильными», но это хорошая отправная точка.

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

Тим Пост
источник
+1 мое знание linux (я управлял веб-сервером linux в течение многих лет) очень помогло мне в моих разработках «Microsoft». На самом деле для каждого решения это проблема.
Знакомство с дистрибутивом Linux (который является реальной системой программного обеспечения, с которым вы можете играть) и POSIX (абстрактная спецификация) - это две совершенно разные вещи. Если вы знакомы с одной Unix или Unix-подобной ОС (Mac OSX в значительной степени исключена), у вас не возникнет проблем с передачей ваших знаний другой.
Дэвид Торнли
3

Да, но вы не говорите, что вам нужно активно изучать это.

Для меня мое знакомство с Linux развилось благодаря использованию его в качестве моей рабочей ОС. Шаг за шагом я изучал то, что мне нужно было знать, по мере их появления, и продолжаю это делать. Интернет полон ресурсов о том, как делать практически все, что вам нужно для Linux, поэтому вместо этого я бы посоветовал вам научиться читать справочные страницы и документацию и позволить своему мозгу впитывать (и забывать) детали того, как этого добиться. конкретные задачи, как вы идете .

При этом, безусловно, есть несколько команд, от которых вы будете избегать мира linux за отсутствие базовых знаний.

instanceofTom
источник
3

В последних четырех из пяти работ, в которых я работал, разработчики и QA (по крайней мере, начали) работали в Windows, но тестовые и рабочие серверы были Linux / UNIX. Всем им нужно было знать хотя бы небольшое количество UNIX, чтобы хотя бы иметь возможность попасть на тестовые серверы и посмотреть журналы или отладить работающую программу в «реальной» среде. Очень мало разработок на самом деле предназначено для Windows в компаниях, которые были в последние 20 лет.

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

Arcege
источник
2

ИМХО, для компетентного программиста, знающего Linux / Unix, был бы большой шаг к еще более важной философии Unix

Maglob
источник
2

Когда я проходил курс «Компьютерные науки по операционным системам», мы изучали операционные системы на основе UNIX и работали над RedHat, потому что он был с открытым исходным кодом и потому, что мы могли видеть код и потому, что мы могли делать с ним то, что просто невозможно было сделать в Окна.

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

Я только что вернулся на Windows 7 с Ubuntu 10.04. Я чувствую себя немного потерянным без grep и некоторых других инструментов командной строки. Я предпочитаю развиваться в среде Linux, потому что я чувствую, что система более благоприятна для опытных пользователей и разработчиков.

Я знаю действительно хороших программистов .NET, которые вышли из колледжа и ничего не знают о Linux, так что это не является обязательным требованием, но я бы ожидал, что любой, кто имеет опыт программирования более 5 лет, знакомится с Linux в той или иной форме в одном время в их карьере.

Вы должны быть судьей того, на чем вы сосредоточены; тем не мение. Если в настоящее время есть путь для разработки мобильных приложений и знание Linux на самом деле не является обязательным требованием, то, возможно, вы сосредоточитесь на изучении мобильного SDK вместо Linux. Есть компромисс для всего, и, похоже, вы знакомы с Linux, где вы можете узнать о нем больше, если потребуется.

jmort253
источник
2
У меня всегда был grep et al на моих окнах Windows, они необходимы.
Orbling
1

Вас что-нибудь беспокоит?

  1. Вы не можете / не должны включать Linux в свое резюме.
  2. Вы не можете работать в магазине Linux.
  3. Ваши текущие требования к работе и уровень заинтересованности в приобретении Linux с помощью самообучения отсутствуют, поэтому ваша ситуация с Linux не изменится.
  4. Не-Windows разработчики будут издеваться над вами (может быть, не в вашем лице.).

Есть множество возможностей трудоустройства и карьерного роста, которые вы все еще можете найти. Я не говорю, что любое из этих «должно» беспокоить вас. Просто будьте честны с самим собой и следите за отраслью в целом и Linux в частности, чтобы увидеть, могут ли ваши пути пересекаться. Без сомнения, вы можете понять это, когда придет время. Кто знает, проект Linux может появиться завтра.

JeffO
источник
1

Я всегда кодировал в среде Windows. Для меня Linux просто был другой ОС, которую я бы использовал в качестве резервной копии на случай, если у меня возникнут проблемы с Windows. Я знал только основные команды, и все, что я пытался сделать на нем, казалось сложным. Но сейчас, когда я работаю веб-разработчиком, мы все используем Linux, поэтому я вынужден изучать его и использовать его для всего. Чем больше я им пользуюсь, тем больше мне это нравится, и я думаю, что это намного продуктивнее и гибче. Я сожалею, что не перепутал больше с Linux раньше. Теперь я просто догоняю.

Так что да, вы должны научиться этому, когда сможете.

chiurox
источник
1

Linux - это инструмент в вашем наборе инструментов, точно так же, как Windows - «просто» инструмент. Свободное владение обоими позволяет вам делать некоторые вещи лучше, но не имеет значения для других вещей.

Лично я нашел Linux в форме Ubuntu очень полезным, потому что он позволяет мне легко создавать и поддерживать такие вещи, как сервер базы данных, почтовый сервер, тестовый веб-сервер и многое другое в виртуальных машинах, без учета стоимости лицензии (плюс версии сервера требуют меньше ресурсов, чем Windows). Если вы не сделаете ничего из этого, я не думаю, что Linux будет иметь для вас значение.


источник
0

Знайте достаточно, что если вы намереваетесь выполнить развертывание в определенной ОС, вы можете убедиться, что ваше приложение работает на нем, но в противном случае ... вам не нужно ничего знать / все.

Стивен Эверс
источник
если вы развертываете на другой ОС, чем вы разрабатывали, вам может потребоваться много знаний о новой ОС. один большой фактор заключается в том, насколько низкоуровневая функциональность присутствует в вашем приложении (т. е. любой доступ с использованием последовательного порта)
Патрик
0

Если я не занимаюсь .NET, я предпочитаю использовать Linux. Стек LAMP кажется мне более естественным, чем WAMP.

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

TaylorOtwell
источник