Які функції сценаріїв оболонок є актуальними для розробки PHP / Python? [зачинено]


28

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

Мої інтереси - веб-розробка, мобільні додатки та, можливо, якісь вбудовані речі в майбутньому. Чи будуть корисні навички сценаріїв оболонок для цих інтересів, і якщо так, то як?


9
Хто б не сказав мені 5 років тому: "Справжні чоловіки вільно володіють C ++, справжні чоловіки використовують командний рядок і завантажують свій Linux з дискети" - fvck you! Я хочу сказати їм, що "справжні чоловіки" використовують голову і вибирають найкращий інструмент, який вони зможуть знайти для роботи. Вони також знають, як розважитися в житті поза роботою. Дами, вибачте за людиноцентричну відповідь. Під "чоловіками" я маю на увазі програмістів, але це було не так, як це було написано в той час.
Робота

3
Хто починає суперечку з "Справжніми чоловіками", або жартує, або сповнений sh * t. Однак подібні ідіоти не повинні применшувати значення розуміння речей, які спочатку здаються складними, програмування оболонок проти перетягування речей із графічним інтерфейсом часто є пекло набагато ефективнішим. І якщо певні C ++ центричні фактори абсолютно необхідні, тоді C ++ - це шлях. (тобто висока продуктивність, або, що більш важливо, використання бібліотеки C або C ++ / наявна база коду ... тощо) - якщо ви не прагматичні, забудьте про цей напрямок роботи.
ocodo

6
@Slomojo: Справжні чоловіки люблять своїх дружин і дітей і ставляться до них добре. ;)
Мейсон Уілер

@ Мейсоне, ти принц сер.
окудо

1
PHP / Python часто розгортається на скриньках Linux, оскільки вони дешевші, ніж вікна Windows. Отже, якщо вам потрібно годувати їх, ви краще знаєте, як все працює і що ви робите.

Відповіді:


35

Якщо я кодую програму Windows (або додаток для Mac), чому мені потрібно знати Linux? Чи повинен механік Ford знати трактори Джона Діра? Все залежить від того, чим ви займаєтесь, професійно чи від власного "хобі" часу.

Тепер це не завадить знати про це. Насправді я твердо вірю в "чим більше ти знаєш, тим краще тобі"


Я питаю, що в наші дні Linux вважається "повинен вчитися" для програмістів усіх типів. Я, можливо, помиляюся.
Макстор

@Max: Це зробить вас розумним лише тоді, коли ви знаєте, як ним користуватися та знаєте, як і чому це робить Linux. Вихідний код Linux має в собі величезні знання, але, як сказав Муад, це НЕ ОБОВ'ЯЗКОВО.
Geek

1
Йому потрібно буде вивчити Linux, якщо він коли-небудь розраховуватиме сам розгорнути свої програми у виробничому середовищі, яке може бути більшою частиною часу Linux.
герцогство в сім'ї

@dukeofgaming, ви можете запускати IIS та PHP без проблем. Linux було б добре вивчити, але необхідно? не зовсім.
Muad'Dib

@dukeofgaming Мені ніколи не довелося розгортати свої програми ASP.NET на сервері Linux, і я сумніваюся, що коли-небудь буду!
Кірк Бродхерст

29

Якщо ви програміст PHP, вам обов'язково слід знати Linux. PHP створено в Linux, а PHP є невід'ємною частиною стеку LAMP: Linux + Apache + MySQL + PHP. Навіть якщо у вас є можливість розвиватися для серверів Windows зараз, на наступне завдання, ймовірно, ви будете розробляти для серверів Linux, і вам потрібно буде ознайомитись з середовищем Linux, щоб ви не працювали над специфічними для вас вікнами Windows. PHP

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

У вбудованому просторі ви повинні знати Linux. Вбудована Windows зустрічається рідко, але вбудований Linux є досить поширеним явищем. (Звичайно, програмування з вбудованим голим металом теж досить поширене, тому залежить, куди ви хочете піти.)

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


3
Я погоджуюся, що вбудований Linux досить поширений для 32-розрядних пристроїв. Однак більшість вбудованих мікросхем все ще 8 і 16-бітні, які не можуть запустити Linux. (Ви на це натякали у коментарі до «голого металу», я лише трохи уточнюю.) 32-бітні пристрої - це сегмент, що найбільш швидко зростає.
tcrosley

+1 для стека LAMP та вбудованого простору. Дуже сподобаються ваші книжкові рекомендації з цього приводу для початківців програмістів Unix / Linux.
Ентоні

17

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

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


12
+1 - не вивчайте Linux, якщо ви хочете продовжувати користуватися Windows.
Mongus Pong

6
+1 - [підступно піднімає руку] Гм. Мене звуть Inaimathi ... і так, я колишній користувач Windows.
Inaimathi

6

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

Мені все одно, що мене знущаються за те, що не знаю цього, наскільки я дбаю про те, наскільки це круто кожного разу, коли я вчуся робити щось інше в Linux. З кожним новим шматочком він просто стає все кращим і кращим.

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

По крайней мере, у вашому резюме потрібно ще щось поставити, але це дійсно не найкраще, що ви вийдете з нього.

Я впевнений, що ти знайдеш власні речі, які змусять тебе піти: "Ого, це так круто!" Моє перше було в змозі "вбити" Apache за допомогою сигналу USR1, щоб змусити його перезавантажити новий конфігураційний файл і перезапустити журнали, не припиняючи ніколи службу і продовжувати отримувати з'єднання. Також ssh та rsync, гарне горе, чому б не портували MS-порти їх поза мене.


+1 Для показу MS рухається до оболонки та відсутність цього повністю!
Орлінг

4

Це вам не зашкодить. Навіть у всій компанії Microsoft стає все більшою ймовірністю, що ви зіткнетеся з принаймні кількома серверами Linux. Наприклад, переповнення стека використовує Linux для балансирів навантаження. Особливо це стосується віртуалізації.

Як програміст, ви можете зробити це краще, розглядаючи ознайомлення з POSIX, а не лише одним варіантом, схожим на UNIX. Незважаючи на те, що у нього є деякі химерності, це представляє багато зусиль, які вступили в неймовірну спробу встановити стандартний інтерфейс, який є (в основному) портативним для всіх середовищ UNIX, як. Зауважте, багато UNIX-подібних систем не є на 100% "вірно коректними", але це хороша відправна точка.

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


+1 мої знання про Linux (я працював веб-сервером Linux протягом багатьох років) дуже допомогли мені в розробці "Microsoft". Насправді кожне рішення - це проблема.

Ознайомлення з дистрибутивом Linux (який є фактичною програмною системою, з якою можна грати) та POSIX (абстрактна специфікація) - це дві дуже різні речі. Якщо ви ознайомитесь з однією Unix або Unix-подібною ОС (Mac OSX значною мірою виключена), вам не складе труднощів передати свої знання іншому.
Девід Торнлі

3

Так, але вам не здається, що вам потрібно це активно вивчати.

Для мене моє знайомство з Linux було розроблене завдяки використанню його як моєї робочої ОС. По частинах я дізнався те, що мені потрібно було знати, коли вони з’явились, і продовжую це робити. В Інтернеті повно ресурсів, як робити майже все, що вам знадобиться, щоб увімкнути Linux, тому замість цього я б запропонував вам добре прочитати людині сторінки та документацію, і дозволити вашому мозку засвоїти (і забути) деталі, як це зробити. конкретні завдання, як ви йдете .

Це, як кажуть, безумовно, є кілька команд, що вас відвернуть від світу Linux за те, що ви не матимете базового розуміння.


3

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

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



2

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

Я б сказав, якщо ви збираєтеся вивчити основи роботи операційних систем під кришкою, ви, мабуть, маєте певний досвід роботи з Linux, навіть якщо це просто в академічному середовищі.

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

Я дійсно знаю хороших програмістів .NET, які вийшли з коледжу, які нічого не знають про Linux, тому це не є вимогою, але я б очікував, що хтось із досвідом програмування більше 5 років буде підданий дії Linux у тій чи іншій формі на одному час у їхній кар’єрі.

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


2
Я завжди мав греп та ін на своїх вікнах Windows, вони є необхідністю.
Орлінг

1

Чи щось вас переймає?

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

Є ще безліч можливостей для роботи та кар’єрних шляхів, які ви можете продовжувати. Я не кажу, що будь-яке з цих «має» турбувати вас. Просто будьте чесні до себе і стежте за галузями взагалі та Linux, зокрема, щоб побачити, чи можуть ваші шляхи перетинатися. Без сумніву, ви могли це зрозуміти, коли настане час. Хто знає, завтра може прийти ваш проект Linux.


1

Я завжди кодувався в середовищі Windows. Для мене Linux раніше був іншою операційною системою, яку я б створив як резервну копію у випадку, якщо моя Windows натрапила на проблеми. Я знав лише основні команди, і все, що я намагався зробити, це здавалося важким. Але зараз на моїй теперішній роботі веб-розробника ми всі використовуємо Linux, тому я змушений вивчити його і використовувати його для всього. Чим більше я його використовую, тим більше мені подобається і я думаю, що він набагато продуктивніший і гнучкіший. Я шкодую, що раніше більше не псувався з Linux. Зараз я просто наздоганяю.

Так що так, ви повинні дізнаватися це, коли зможете.


1

Linux - це інструмент у вашій панелі інструментів так само, як Windows є "просто" інструментом. Вільне володіння обома можливостями дозволяє вам робити якісь речі краще, але для інших речей це не має значення.

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


0

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


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

0

Якщо я не роблю .NET, я вважаю за краще використовувати Linux. Стек LAMP мені здається більш природним, ніж WAMP.

Я б точно рекомендував вивчити це, якщо у вас є взагалі інтерес до вивчення чогось іншого, ніж речі Microsoft.

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