Czym się różni programowanie na Linuksa od tego na Windę

0

pewnie najlepiej znać oba :)

do tej pory w swojej "karierze" pracowałem tam gdzie używano Windowsa - ze dwa razy oferta mi uciekła, z tego powodu, że nie miałem doświadczenia z linuksem, chociaż technicznie poszło mi ok (tak mi powiedziano/napisano w odpowiedzi odmownej)
Z drugiej strony - patrząc się na siebie, nie jestem power-userem Windowsa, ale aplikacje które współtworzyłem nie były niskopoziomowe. Musiałem zrozumieć i umieć coś tam (nie ma sensu wchodzić w szczegóły) skonfigurować w systemie (czy sprawdzić [winapi]) czasami użyć biblioteki potrzebnej dla wykonania zadania(winsock, wincrypt itp), kiedyś było jeszcze GUI (MFC)- ale to może było może 10-15% czasu i zaangażowania - reszta to kodowanie logiki biznesowej - to tak, żeby zobrazować co było mi dotychczas potrzebne z szeroko rozumianego Windowsa

jako, że nie mam praktyki w programowaniu pod Linuksem - a nawet jak postawię i napiszę "Hello Word" czy zrobię tutka z netu to nie wydaje mi się, aby w programowaniu pod Linuksa było inaczej niż pod windę - no bo tutoriale koncentrują się na języku, nie na systemie i nie wiem jak to by się miało do rzeczywistości

może to dla Was śmieszne - ale jakby ktoś mi mógł wytłumaczyć co to znaczy programować pod linuksem i na ile trzeba go znać (jasne, jak się robi przy jądrze systemu to trzeba znać system jak własną kieszeń, ale mi chodzi raczej o takie typowe/przeciętne programowanie gdy programista siedzi na Linuksie - jak to jest różne od Windy)

z góry dziękuję za odpowiedzi

0

Często w firmach pojawia się potrzeba, by programista wszedł na serwer Linuksowy przez klienta SSH i coś tam poklikał. Do tego dochodzi oskryptowanie (w bashu) paczek instalacyjnych, które lecą na Linuksa.

0
Wibowit napisał(a):

Często w firmach pojawia się potrzeba, by programista wszedł na serwer Linuksowy przez klienta SSH i coś tam poklikał. Do tego dochodzi oskryptowanie (w bashu) paczek instalacyjnych, które lecą na Linuksa.

czyli wychodzi na to że da się to nadrobić w stosunkowo przewidywanym czasie i co do zasady nie różni się od prigramowania na windę - narzędzia, nabywanie biegłości na bieżąco itd

0

Nikt ci nie będzie kazać pisać sterowników jeśli o to pytasz. Powinieneś znać:

  • obsługę manuala
  • gdzie co znaleźć w systemie plików
  • prawa dostępu
  • monitorowanie zasobów (wszelkie odmiany *top, ps, netstat itp)
  • package managera
  • przeszukiwanie logów
  • jak napisać skrypt w bashu tak żeby nie wywalił całej wirtualki w kosmos
  • ogarnąć typową narzędziówkę (grepy, findy, sedy itp) do składania użytecznych rzeczy
  • jak skompilować jakieś narzędzie z netu korzystając z typowych narzędzi - np autotoolsów
  • jak obsłużyć SSH

No i dodatkowo, w zależności czy tego używacie:

  • pisać usługi pod Vkę albo systemd
  • budować paczki (np rpm)

Bardziej zaawansowanych rzeczy raczej nie trzeba, a jak trzeba to sobie znajdziesz jak to zrobić.

1

Sama Java jest mocno przenośna. Problemy zwykle wynikają z tego, że:

  • Linuks używa slashy w ścieżkach, a Windows backslashy, a mało kto porywa się na używanie System.getProperty("file.separator")
  • systemy plików na Windowsie i Linuksie się różnią - mają różne schematy uprawnień, różnie są rozwiązywane dowiązania, partycje, inna jest struktura katalogów, etc
  • używa się binarek i trzeba zadbać o ich zgodność z systemem

Poza tym praktycznie wszystko jest takie samo, bo aplikacja biznesowa oprócz jeżdżenia po dysku robi mniej więcej takie rzeczy:

  • gada z bazą
  • gada przez HTTP
  • gada przez kolejki
  • dobija się do LDAPa
  • gada z czymkolwiek innym przez sieć

Powyższe rzeczy generalnie działają tak samo obojętnie czy odpalimy program Javowy na Linuksie czy na Windowsie.

Narzędzia Linuksowe które trzeba znać to głównie:

  • bash (składnia) wraz z
    • plikami konfiguracyjnymi jak ~/.profile ~/.bash_profile ~/.bashrc itd
    • komendami typu: alias, set
    • przekierowaniem strumieni (np stderr na stdout)
    • itd
  • polecenia typu: mv, cp, rm, mkdir, rmdir, touch, chmod, chown, grep, find, sed, less, ls, head, tail, yes, top, ulimit, uname, netstat, du, df, dd, itd
  • podstawowa obsługa edytora vi/ vim,

Biegłość (czy też komfortowe poruszanie się) w Linuksie można osiągnąć po prostu używając Linuksa i grzebiąc w konsoli. Nie polecam nauki obsługi Linuksa poprzez instalowanie sterowników (zwłaszcza tych do grafiki) - jeśli standardowe sterowniki pozwalają na używanie systemu to lepiej tak go zostawić i zająć się czymś przewidywalnym i rozsądnym.

Z drugiej strony w dzisiejszych czasach desktopowy Linux niespecjalnie wymusza znajomość wielu wbudowanych konsolowych narzędzi. Jeśli trzeba w konsolę wpisać jakieś "magiczne" polecenia to zwykle znajduje się je w dokumentacji programu bądź na StackOverflow. Z tego względu być może dobrym rozwiązaniem byłoby postawienie serwerowej (takiej bez GUI) dystrybucji Linuksa w VMce i obsługiwanie jej wyłącznie przez terminal.

Aktualizacja:
Trochę długo mi zeszło i Trzeźwy Programista mnie ubiegł :]

0
Wibowit napisał(a):

Sama Java jest mocno przenośna. Problemy zwykle wynikają z tego, że:

  • Linuks używa slashy w ścieżkach, a Windows backslashy, a mało kto porywa się na używanie System.getProperty("file.separator")
  • systemy plików na Windowsie i Linuksie się różnią - mają różne schematy uprawnień, różnie są rozwiązywane dowiązania, partycje, inna jest struktura katalogów, etc
  • używa się binarek i trzeba zadbać o ich zgodność z systemem

Poza tym praktycznie wszystko jest takie samo, bo aplikacja biznesowa oprócz jeżdżenia po dysku robi mniej więcej takie rzeczy:

  • gada z bazą
  • gada przez HTTP
  • gada przez kolejki
  • dobija się do LDAPa
  • gada z czymkolwiek innym przez sieć

Powyższe rzeczy generalnie działają tak samo obojętnie czy odpalimy program Javowy na Linuksie czy na Windowsie.

Narzędzia Linuksowe które trzeba znać to głównie:

  • bash (składnia) wraz z
    • plikami konfiguracyjnymi jak ~/.profile ~/.bash_profile ~/.bashrc itd
    • komendami typu: alias, set
    • przekierowaniem strumieni (np stderr na stdout)
    • itd
  • polecenia typu: mv, cp, rm, mkdir, rmdir, touch, chmod, chown, grep, find, sed, less, ls, head, tail, yes, top, ulimit, uname, netstat, du, df, dd, itd
  • podstawowa obsługa edytora vi/ vim,

Biegłość (czy też komfortowe poruszanie się) w Linuksie można osiągnąć po prostu używając Linuksa i grzebiąc w konsoli. Nie polecam nauki obsługi Linuksa poprzez instalowanie sterowników (zwłaszcza tych do grafiki) - jeśli standardowe sterowniki pozwalają na używanie systemu to lepiej tak go zostawić i zająć się czymś przewidywalnym i rozsądnym.

Z drugiej strony w dzisiejszych czasach desktopowy Linux niespecjalnie wymusza znajomość wielu wbudowanych konsolowych narzędzi. Jeśli trzeba w konsolę wpisać jakieś "magiczne" polecenia to zwykle znajduje się je w dokumentacji programu bądź na StackOverflow. Z tego względu być może dobrym rozwiązaniem byłoby postawienie serwerowej (takiej bez GUI) dystrybucji Linuksa w VMce i obsługiwanie jej wyłącznie przez terminal.

Aktualizacja:
Trochę długo mi zeszło i Trzeźwy Programista mnie ubiegł :]

dziękuję za wyjasnienia i podopowiedzi co i jak i na czym warto sie skupić
postawilem sobie VM a na niej ubuntu i zaczynam "klikać" :)

1

Z tym vi/vim to nie przesadzajmy. Linuksa używam z przerwami od 25 lat i do dzisiaj nie pamiętam jak się wychodzi z vi.
(od dwóch lat w domu 100% Linux, w pracy na 50%).

Do edycji są dzisiaj dostępne bardziej ludzkie edytory - nano, gedit, kate, geany, atom, VS Code...

Tu przegląd tych używanych w konsoli: https://www.tecmint.com/linux-command-line-editors/

0

Z tym vi to chodziło mi o podstawowe rzeczy:

  • podstawowe komendy do edycji
  • wchodzenie w tryb edycji i wychodzenie z niego (można edytować poza trybem edycji, w trybie edycji po prostu inaczej się edytuje i jest inny zbiór skrótów klawiaturowych)
  • :wq gdy chcemy zapisać i wyjść albo :q! jeśli chcemy nie zapisywać i wyjść

To w większości przypadków wystarcza. Vi jest domyślnym edytorem, gdy np używam gita z konsoli i git chce np bym zedytował commita. Vi jest też instalowany domyślnie na wszelakich Linuksach, a reszta edytorów niespecjalnie.

0
vpiotr napisał(a):

Z tym vi/vim to nie przesadzajmy. Linuksa używam z przerwami od 25 lat i do dzisiaj nie pamiętam jak się wychodzi z vi.
(od dwóch lat w domu 100% Linux, w pracy na 50%).

O.o

1 użytkowników online, w tym zalogowanych: 0, gości: 1