Jakie funkcje skryptów powłoki są istotne dla rozwoju PHP / Python? [Zamknięte]

28

Jestem programistą PHP / Python uczącym się Java i C # (.NET).
Mój główny system operacyjny to Windows 7, ale korzystałem z Linuksa i obecnie uruchamiam podwójnie z Ubuntu. Moja wiedza na temat Linuksa jest jednak dość ograniczona. Mogę pracować z wierszem poleceń przy prostych zadaniach, ale to wszystko. Nie wykonuję żadnych skryptów powłoki i nie znam wielu ważnych poleceń.

Moje zainteresowania to tworzenie stron internetowych, aplikacje mobilne i być może pewne osadzone rzeczy w przyszłości. Czy umiejętności skryptowe powłoki będą przydatne dla tych zainteresowań, a jeśli tak, to w jaki sposób?

Maxtor
źródło
9
Ktokolwiek mi powiedział 5 lat temu „Prawdziwi mężczyźni biegle posługują się językiem C ++, prawdziwi mężczyźni używają wiersza poleceń i uruchamiają system Linux z dyskietki” - fvck you! Chcę im powiedzieć, że „prawdziwi mężczyźni” używają głowy i wybierają najlepsze narzędzie, jakie mogą znaleźć w pracy. Wiedzą także, jak dobrze się bawić w życiu poza pracą. Panie, przepraszam za męską odpowiedź. Przez „mężczyzn” rozumiem programistów, ale nie tak to wtedy sformułowano.
Job
3
Ktokolwiek zaczyna kłótnię z „prawdziwymi mężczyznami” albo żartuje, albo jest pełen gówna. Jednak tacy idioci nie powinni umniejszać wartości zrozumienia rzeczy, które na początku wydają się trudne, programowanie powłoki w przeciwieństwie do przeciągania GUI często jest o wiele bardziej wydajne. A jeśli pewne czynniki centryczne C ++ są absolutnie konieczne, to C ++ jest właściwą drogą. (tj. wysoka wydajność, a przede wszystkim użycie biblioteki C lub C ++ / istniejącej bazy kodu ... itd.) - jeśli nie jesteś pragmatyczny, zapomnij o tej linii pracy.
ocodo
6
@Slomojo: Prawdziwi mężczyźni kochają swoje żony i dzieci i traktują je dobrze. ;)
Mason Wheeler
@Mason, jesteś panem księciem.
ocodo
1
PHP / Python jest często wdrażany na urządzeniach z systemem Linux, ponieważ są one tańsze niż urządzenia z systemem Windows. Dlatego jeśli musisz je pielęgnować, lepiej jest wiedzieć, jak działają rzeczy i co robisz.

Odpowiedzi:

35

Jeśli koduję aplikację Windows (lub aplikację Mac), dlaczego powinienem znać Linuksa? Czy mechanik Forda powinien znać ciągniki John Deer? Wszystko zależy od tego, co robisz, zawodowo lub od własnego czasu „hobby”.

Teraz to nie boli. W rzeczywistości jestem głęboko przekonany, że „im więcej wiesz, tym lepiej”

Muad'Dib
źródło
Powodem, dla którego pytam, było to, że Linux jest obecnie uważany za „niezbędny program” dla programistów wszystkich typów. Mogę się jednak mylić.
Maxtor
@Max: Sprawi, że będziesz mądry tylko wtedy, gdy będziesz wiedział, jak go używać i wiesz, jak i dlaczego Linux to robi. Kod źródłowy Linuksa ma ogromną wiedzę osadzoną w nim, ale jak powiedział Muad, to NIE MUSI.
Geek
1
Będzie musiał nauczyć się Linuksa, jeśli kiedykolwiek spodziewa się samodzielnie wdrożyć swoje programy w środowisku produkcyjnym, które może być przez większość czasu linux.
dukeofgaming
@dukeofgaming, możesz uruchomić IIS i PHP bez problemu. Linux byłby DOBRY do nauczenia się, ale konieczny? nie całkiem.
Muad'Dib,
@dukeofgaming Nigdy nie musiałem wdrażać moich aplikacji ASP.NET na serwerze z linuksem i wątpię, czy kiedykolwiek to zrobię!
Kirk Broadhurst
29

Jeśli jesteś programistą PHP, zdecydowanie powinieneś znać Linuksa. PHP zostało stworzone na Linuksie, a PHP jest ważną częścią stosu LAMP: Linux + Apache + MySQL + PHP. Nawet jeśli masz teraz możliwość programowania dla serwerów Windows, następnym zadaniem będzie prawdopodobnie tworzenie dla serwerów Linux i musisz zapoznać się ze środowiskiem Linux, aby nie uruchamiać programów specyficznych dla Windows PHP.

W przestrzeni aplikacji mobilnych wiedza o Linuksie (niestety) nie będzie miała większego znaczenia dla środowisk, w których się rozwijasz. System operacyjny iPhone'a nie ma nic wspólnego z Linuksem, a Android jest tak mocno osadzony w maszynie wirtualnej, że nigdy nie dowiesz się, że pod nim jest Linux. Mógłbyś programować na Linuksa na Meego lub Maemo, ale te nie mają tak dużej popularności iPhone'a i Androida.

W osadzonym przestrzeni, ty masz wiedzieć Linux. Wbudowany system Windows jest rzadki, ale wbudowany system Linux jest dość powszechny. (Oczywiście osadzone programowanie bez systemu operacyjnego jest również dość powszechne, więc zależy od tego, gdzie chcesz się udać.)

Jeśli nauczysz się Linuksa dogłębnie przez wiele lat, będziesz miał pewien poziom zrozumienia każdej części systemu od jądra, poprzez proces uruchamiania, aż do wiersza poleceń i GUI.

Ken Bloom
źródło
3
Zgadzam się, że osadzony Linux jest dość powszechny na urządzeniach 32-bitowych. Jednak większość osadzonych mikrosów ma nadal 8 i 16 bitów, co nie pozwala na uruchomienie Linuksa. (Nawiązałeś do tego w swoim komentarzu „bez metalu”, ja tylko trochę wyjaśniam.) 32-bitowe urządzenia są jednak najszybciej rozwijającym się segmentem.
tcrosley,
+1 za stos LAMP i osadzone miejsce. Z przyjemnością polecę Ci książki na ten temat dla początkujących programistów Unix / Linux.
Anthony
17

Istnieje pewien stopień 80/20 myślenia, że ​​możesz zastosować tutaj. W zasadzie nie zajmuje dużo czasu, aby poznać podstawy działania Linuksa i podstawowe polecenia, o których powinieneś wiedzieć z Powłoki. Podobnie podstawowa konfiguracja Apache jest bardzo wygodna w razie potrzeby. Nie musisz poświęcać na to lat swojego życia, ale z pewnością warto poznać wystarczająco dużo podstaw, które możesz uzyskać, uruchamiając własny serwer, jeśli zajdzie taka potrzeba.

Ale to cienka linia. Jeśli nie jesteś ostrożny, szybko zauważysz, że system Windows naprawdę cię odznacza, gdy przyzwyczajasz się do tego, co oferuje Linux ...

glenatron
źródło
12
+1 - nie ucz się Linuksa, jeśli chcesz nadal korzystać z systemu Windows.
Mongus Pong,
6
+1 - [nieśmiało podnosi rękę] Um. Nazywam się Inaimathi ... i jestem byłym użytkownikiem systemu Windows.
Inaimathi,
6

Nie musisz się tego uczyć, ale dzięki temu będziesz lepszym programistą. Dowiesz się, jak robić rzeczy w inny sposób niż w systemie Windows. Użycie dowolnej powłoki * sh ostatecznie doprowadzi do tworzenia skryptów i używania wyrażeń regularnych, automatyzacji instalacji, analizowania dużych plików itp.

Nie dbam o to, że jestem wyśmiewany z tego, że go nie znam, tak samo jak dbam o to, jak fajnie jest za każdym razem, gdy uczę się robić coś innego w Linuksie. Z każdym nowym bitem staje się coraz lepszy.

Powershell ma wiele ze świata nix, w końcu zdali sobie sprawę, że do automatyzacji potrzebna jest dobra konsola (za to uznanie dla MS). Zarówno Perl, jak i Python wydają się być mieszanką C, bash, sed, awk, wszystko połączone w coś dobrego na swój sposób.

Przynajmniej będziesz miał coś innego do umieszczenia w swoim CV, ale tak naprawdę nie jest to najlepsza rzecz, którą z tego wyciągniesz.

Jestem pewien, że znajdziesz na własną rękę rzeczy, które sprawią, że odejdziesz: „Wow, to takie fajne!” Moja pierwsza była w stanie „zabić” Apache'a za pomocą sygnału USR1, aby zmusić go do ponownego załadowania nowego pliku konfiguracyjnego i zrestartowania logów, bez zatrzymywania usługi i dalszego odbierania połączeń. Także ssh i rsync, dobry żal, dlaczego MS nie chciałbym ich przenieść, jest poza mną.

Marlon
źródło
+1 Za pokazanie MS porusza się w kierunku pocisków i brak robienia tego całkowicie!
Orbling
4

To cię nie skrzywdzi. Nawet w całej firmie Microsoft coraz bardziej prawdopodobne jest, że napotkasz przynajmniej kilka serwerów Linux. Na przykład przepełnienie stosu używa systemu Linux do równoważenia obciążenia. Dotyczy to zwłaszcza wirtualizacji.

Jako programista możesz zrobić lepiej, rozważając poznanie POSIX, a nie tylko jednego wariantu podobnego do UNIX. Chociaż ma pewne dziwactwa, stanowi duży wysiłek, który podjął niesamowitą próbę ustanowienia standardowego interfejsu, który jest (głównie) przenośny we wszystkich środowiskach podobnych do UNIX. Zauważ, że wiele systemów podobnych do UNIX-a nie jest w 100% „poprawnie poprawnych”, ale jest to dobry punkt wyjścia.

Jako zwykły użytkownik mogę jedynie zasugerować, że fajnie jest grzebać w czymś nowym i uczyć się nowych rzeczy. Wydaje mi się, że można być „guru” z każdym systemem operacyjnym, o jakim można pomyśleć, ale nie sądzę, aby było to najbardziej przydatne przedsięwzięcie dla programisty. Mimo to praktyczna znajomość rzeczy, które możesz napotkać, jest dobra ... i z twojego pytania wynika, że ​​prawdopodobnie spotkasz Linuksa w przyszłości.

Tim Post
źródło
+1 moja wiedza na temat Linuksa (od lat administruję serwerem linuksowym) bardzo mi pomogła w rozwoju „Microsoftu”. W rzeczywistości każde rozwiązanie stanowi problem.
Zapoznanie się z dystrybucją Linuksa (który jest systemem, z którym można grać) i POSIX (abstrakcyjna specyfikacja) to dwie bardzo różne rzeczy. Jeśli zapoznasz się z jednym systemem uniksowym lub podobnym do systemu uniksowego (Mac OSX w dużej mierze wyjątkiem), nie będziesz miał trudności z przeniesieniem swojej wiedzy na inny.
David Thornley,
3

Tak, ale nie brzmisz tak, jakbyś musiał go aktywnie studiować.

Dla mnie moja znajomość Linuksa rozwinęła się dzięki wykorzystaniu go jako systemu operacyjnego. Kawałek po kawałku nauczyłem się rzeczy, które musiałem wiedzieć, kiedy się pojawiały, i nadal to robię. Internet jest pełen zasobów, jak zrobić wszystko, co trzeba by napisać linux, więc zamiast tego sugerowałbym, że umiesz czytać strony podręcznika i dokumentację i pozwól swojemu mózgowi przyswoić (i zapomnieć) szczegóły, jak to osiągnąć konkretne zadania na bieżąco .

Biorąc to pod uwagę, z pewnością istnieje kilka poleceń, których będziesz unikać ze świata linux za to, że nie znasz podstaw.

instanceofTom
źródło
3

W ostatnich czterech z pięciu zadań, w których byłem, programiści i QA (przynajmniej rozpoczęli) pracowali w systemie Windows, ale serwerami testowymi i produkcyjnymi były Linux / UNIX. Wszyscy musieli znać przynajmniej niewielką ilość systemu UNIX, aby przynajmniej móc dostać się na serwery testowe i przeglądać dzienniki lub debugować działający program w „prawdziwym” środowisku. W rzeczywistości bardzo niewiele prac rozwojowych jest przeznaczonych dla systemu Windows w firmach, które były w ciągu ostatnich 20 lat.

Nawiązując do innych tutaj, bardzo niewiele może być „niezbędnych” do pracy lub kariery, ale pomoże ci zrozumieć twoją pracę, korzyści i ograniczenia języka lub systemu, którego używasz.

Arcege
źródło
2

IMHO, dla kompetentnego programisty znającego Linux / Unix, byłby świetnym krokiem do jeszcze ważniejszej filozofii Uniksa

Maglob
źródło
2

Kiedy wziąłem kurs informatyki systemów operacyjnych, studiowaliśmy systemy operacyjne oparte na UNIXie i pracowaliśmy nad RedHat, ponieważ był to program open source i ponieważ mogliśmy zobaczyć kod oraz ponieważ mogliśmy z nim zrobić rzeczy, których po prostu nie da się zrobić Windows

Powiedziałbym, że jeśli chcesz poznać podstawy działania systemów operacyjnych pod maską, prawdopodobnie powinieneś mieć trochę doświadczenia z Linuksem, nawet jeśli jest to tylko środowisko akademickie.

Właśnie wróciłem do systemu Windows 7 z systemu Ubuntu 10.04. Czuję się trochę zagubiony bez grep i niektórych innych narzędzi wiersza poleceń. Wolę tworzyć w środowisku Linux, ponieważ uważam, że system bardziej sprzyja zaawansowanym użytkownikom i programistom.

Znam naprawdę dobrych programistów .NET, którzy wyjechali ze studiów, którzy nie wiedzą nic o Linuksie, więc nie jest to wymóg, ale spodziewałbym się, że każdy z ponad 5-letnim doświadczeniem w programowaniu będzie narażony na Linuksa w takiej czy innej formie czas w ich karierze.

Musisz być sędzią tego, na czym się koncentrujesz; jednak. Jeśli istnieje obecnie ścieżka rozwoju aplikacji mobilnych, a znajomość Linuksa nie jest tak naprawdę wymogiem, być może skupisz się na zdobywaniu dodatkowych informacji na temat mobilnych zestawów SDK zamiast Linuksa. Kompromis dotyczy wszystkiego i wygląda na to, że masz podstawową wiedzę na temat Linuksa, gdzie możesz dowiedzieć się więcej o nim, jeśli zajdzie taka potrzeba.

jmort253
źródło
2
Zawsze miałem grep i in. Na moich urządzeniach Windows, są one koniecznością.
Orbling
1

Czy przeszkadza Ci którykolwiek z poniższych elementów?

  1. Nie możesz / nie powinieneś umieszczać Linuksa w swoim CV.
  2. Nie kwalifikujesz się do pracy w sklepie wyłącznie z systemem Linux.
  3. Twoje obecne wymagania dotyczące pracy i poziom zainteresowania wykonywaniem Linuksa poprzez samokształcenie nie istnieją, więc twoja sytuacja dotycząca Linuksa się nie zmieni.
  4. Programiści spoza systemu Windows wyśmiewają cię (może nie prosto w twarz).

Istnieje mnóstwo możliwości pracy i ścieżek kariery, które możesz nadal realizować. Nie twierdzę, że którekolwiek z tych „powinno ci przeszkadzać”. Bądź ze sobą szczery i miej oko na całą branżę, a zwłaszcza na Linuksa, aby sprawdzić, czy twoje ścieżki mogą się przeciąć. Bez wątpienia możesz to rozgryźć, kiedy nadejdzie czas. Kto wie, jutro może przyjść projekt Linuksa.

JeffO
źródło
1

Zawsze kodowałem w środowisku Windows. Dla mnie Linux był po prostu innym systemem operacyjnym, który miałem jako kopię zapasową na wypadek, gdyby mój Windows miał kłopoty. Znałem tylko podstawowe polecenia i wszystko, co próbowałem na nim zrobić, wydawało się trudne. Ale teraz, gdy pracuję jako programista, wszyscy używamy Linuksa, więc jestem zmuszony się go nauczyć i używać go do wszystkiego. Im częściej go używam, tym bardziej mi się podoba i myślę, że jest o wiele bardziej produktywny i elastyczny. Żałuję, że wcześniej nie pomieszałem z Linuksem. Teraz tylko nadrabiam zaległości.

Tak, powinieneś się tego nauczyć, kiedy tylko możesz.

chiurox
źródło
1

Linux jest narzędziem w twoim zestawie narzędzi, podobnie jak Windows jest „tylko” narzędziem. Biegła znajomość obu pozwala ci lepiej robić niektóre rzeczy, ale nie ma znaczenia dla innych.

Osobiście uważam, że Linux w formie Ubuntu jest bardzo przydatny, ponieważ pozwala mi łatwo tworzyć i utrzymywać takie rzeczy, jak serwer bazy danych, serwer poczty, testowy serwer WWW i wiele więcej na maszynach wirtualnych bez konieczności uwzględniania kosztów licencji (plus wersje serwerowe wymagają mniej zasobów niż Windows). Jeśli nie zrobisz żadnej z tych rzeczy, nie sądzę, aby Linux miał dla ciebie znaczenie.


źródło
0

Wiedz wystarczająco dużo, że jeśli zamierzasz wdrożyć w danym systemie operacyjnym, możesz upewnić się, że aplikacja na nim działa, ale w przeciwnym razie ... nie musisz nic / wszystkiego wiedzieć.

Steven Evers
źródło
jeśli są wdrażane na innym systemie operacyjnym niż na rozwiniętych, to mógłby potrzebować dużo wiedzy na temat nowego systemu operacyjnego. jednym wielkim czynnikiem jest to, ile funkcjonalność niższego poziomu jest obecna w twojej aplikacji (tj. - dowolny dostęp do portu szeregowego)
Patrick
0

Jeśli nie robię .NET, wolę używać Linuksa. Stos LAMP jest dla mnie bardziej naturalny niż WAMP.

Zdecydowanie poleciłbym naukę tego, jeśli w ogóle interesujesz się nauką czegoś innego niż Microsoft.

TaylorOtwell
źródło