Jakie zalety ma Ubuntu w stosunku do systemu Windows jako środowiska programowania?

59

Dlaczego pisanie programu w plikach tekstowych lub przez terminal jest lepszą opcją (jak czytam) niż używanie IDE takich jak Visual Studio w systemie Windows? Czy istnieją tam funkcje IDE (np. Pokazywanie błędów kompilacji) czy jest to proces ręczny?

Muhammad Charaf
źródło
16
Niektóre osoby zajmują się programowaniem od dłuższego czasu i są bardzo skuteczne w wykonywaniu tego, co robią z wiersza polecenia opartego na tekście. Mogą również znaleźć edytorów, którzy lubią vimich. To bardzo subiektywny obszar! Wiele osób korzysta z IDE w Linuksie, więc łączysz tutaj wiele rzeczy.
Warren P
3
Uważam, że IDE nie są głównym pytaniem. Istnieje wiele IDE dla systemów Linux. Na przykład wszystkie IDE JetBrain (IntelliJ / PyCharm itp.) Działają na systemie Linux. Zaćmienie działa na systemie Linux. QtCreator działa na systemie Linux.
Bakuriu
12
To pytanie znajdujące się na tej stronie będzie podlegać tendencyjności potwierdzającej .
zzzzBov,
5
Starając się nie dopuścić do pytania w trakcie meta-dyskusji, otworzyłem osobny temat Meta, aby go konkretnie rozwiązać .
Oli
4
Przeredaguj to pytanie, aby było bardziej sensowne, w szczególności tytuł. Ubuntu nie zmusza cię do unikania IDE i trzymania się edytorów tekstowych do opracowywania oprogramowania, podobnie jak Windows.
Reinier Post,

Odpowiedzi:

87

Ten rodzaj hipotetyczny może przydać się lepiej w Programmers.SE, ponieważ może być tutaj dość jednostronny. Powiedziałem, że byłem programistą .NET przez kilka lat i zależałem od Visual Studio. Wiele dla ciebie robi i tak, szczególnie podoba mi się zintegrowany debugger ... Myślę jednak, że istnieje kilka powodów, dla których ludzie wybierają Linuksa:

  • Ubuntu jest bezpłatny. Windows i VS mogą być bardzo drogie.

  • Ubuntu jest bezpłatny . Windows i VS dają bardzo niewielką kontrolę nad sposobem ich używania.

  • Ubuntu to środowisko programistyczne od razu po wyjęciu z pudełka. Narzędzia, takie jak bash grep, sed, awk. Windows jest historycznie wielkim problemem w dolnej części skryptu. Pliki wsadowe są okropne i nawet w przypadku programu PowerShell korzystanie z wiersza poleceń w systemie Windows jest nieznaczne w porównaniu z narzędziami Bash i GNU. Możesz przenieść niektóre z nich do systemu Windows, ale to nie to samo doświadczenie.

  • Skomplikowane konfiguracje można łatwo zautomatyzować i powielić apt-get, narzędzia takie jak Puppet , Chef , Juju , Fabric i proste skrypty.

  • Niektóre rzeczy nie wymagają skomplikowanych IDE. Obecnie jestem programistą Python i jestem całkowicie zadowolony z własnych wbudowanych narzędzi i debuggera. Używam edytora tekstu, wiersza poleceń i struktury ... I mam o wiele większą kontrolę niż w systemie .NET. Mogę budować, testować, zatwierdzać i wdrażać moje aplikacje internetowe za pomocą jednego polecenia Fabric.

    Nie oznacza to, że nie ma monolitycznych IDE. Zaćmienie i Netbeans. MonoDevelop. KDevelop4 i QT Creator. Wszyscy mają swoich użytkowników, którzy przysięgają.

Czy Ubuntu jest dla Ciebie lepszy ? Kto wie. To bardzo sprawny i bardzo konfigurowalny system. Jeśli dasz mu szansę i zmienisz przepływ pracy, aby mógł ci pomóc, powinieneś być w stanie go zatrzymać.

Oli
źródło
18
„Bezpłatny” dotyczy zarówno kosztów, jak i kłopotów. Używam komputera Mac, ale narzędzie takie jak Vagrant ułatwia skonfigurowanie czystej maszyny wirtualnej systemu Linux dla każdego projektu i odrzucenie jej po zakończeniu projektu. "Czego chcę?" to jedyna kwestia, a nie „czy mam klucz licencyjny dla tego systemu operacyjnego i jak go rozpoznać ...?”
Nathan Long
14
+1 Za pozostawanie obiektywnym, gdy tak wielu ludziom łatwo jest się zachowywać jak kolano „Windoze ssie wszystko”.
Phil
2
Należy zauważyć, że studio wizualne jest bardziej darmowe niż kiedyś, od jakiegoś czasu obsługuje pliki MAKE, a wtyczki umożliwiają pisanie i debugowanie aplikacji cygwin całkowicie w Visual Studio.
Scott Chamberlain
6
even PowerShell scripts lack the power of Bash- Twierdziłbym, że nie znasz dobrze PS; jest niesamowicie potężny i nie spotkałem w Bash nic, czego nie można zrobić w PS
Mark Henderson
4
@MarkHenderson Tak, prawie na pewno przez to, że nie używam go wystarczająco. Został wprowadzony, gdy zostawiłem za sobą Windows i .NET. Myślę, że Bash (a przez „Bash” naprawdę mam na myśli GNU) zabrał ze sobą, ponieważ używasz go wszędzie i do wszystkiego . PS wymagało tak dużo Googling za każdym razem, bo zawsze wszystko było po prostu super-wyspecjalizowane. Naprawdę trudno powiedzieć po tak długim czasie z Bash.
Oli
37

Chciałbym jednak dodać jeszcze jeden ważny powód; Ubuntu doskonale nadaje się do eksperymentowania z nowymi bibliotekami, językami, IDE i kompilatorami. Wszystko jest na wyciągnięcie ręki.

Więc słyszałeś o wymyślnym języku o nazwie Haskell :

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

Och, słyszałeś fantastycznego edytora dla Haskell:

sudo apt-get install <fancy-editor-for-haskell>

To samo z bibliotekami C / C ++ , tylko apt-get installje, a pliki binarne i nagłówki przechodzą do odpowiednich folderów, i możesz po prostu #includeje w swoich plikach źródłowych, nawet bez konieczności sprawdzania, gdzie się znajdują!

W gruncie rzeczy nie chodzi o to, jak szybko możesz skonfigurować codzienne środowisko pracy. Chodzi również o to, jak niezwykle szybko można skonfigurować środowisko eksperymentalne. Wierzę, że to przyspiesza naukę w Linuksie.

enobayram
źródło
36
apt-get, a mentalność, że wszystko musi być w ten sposób instalowalne, jest być może najlepszą rzeczą w Linuksie. Ani OSX, ani Windows nie porównuje tutaj.
Nathan Long,
11
Tak, ale musisz ręcznie pobrać instalator każdej aplikacji: fakt, że używają tego samego instalatora w środku, nie kosztuje dużo (oszczędza to trochę wysiłku). To nie to samo, co wbudowany menedżer pakietów.
Bezużyteczne
2
@NathanLong Właśnie zrobiłem dokładnie to samo, używając Macports: sudo port install ghc. Świeżo skompilowane ze źródeł. The MacPorts Project currently distributes 17699 ports. Jedną różnicą jest to, że zawsze się kompiluje.
Alecail
2
@karadeniz: I to nie wspominając yum, pacman, emerge, petget, pkgadd...
Aesin
2
Lubię MacPorts (i utrzymuję kilka pakietów tam i na Homebrew), ale tak naprawdę nie może się równać z Debianem. Te mniejsze projekty po prostu nie mają wystarczającej siły, aby utrzymać duże repozytorium na tym samym poziomie. To samo dotyczy cygwin i coapp po stronie Windows. Kluczową różnicą jest kulturowa, myślę, że menedżerowie pakietów linuksowych są częścią systemu i wszyscy używają ich do wszystkiego, nie są one lekko zaniedbaną zalewą dodatków.
jcupitt
20

Oto opinia przede wszystkim twórcy platformy Microsoft. Jeśli nie celujesz w ekosystem .NET, twierdzę, że najlepszą opcją jest Ubuntu. Będziesz miał znacznie łatwiejszy czas na uzyskanie, konfigurację i używanie narzędzi dla prawie każdej innej platformy / języka, jeśli używasz Ubuntu zamiast Windows.

Wartość zestawu narzędzi Microsoft polega na tym, że jest on WYSOCE zintegrowany. Od IDE do kontroli źródła, zarządzania projektami, kompilacji, wdrażania, bazy danych, infrastruktury chmury, muzeum reklamy . Microsoft sprawia, że ​​BARDZO łatwe jest korzystanie z ich platformy.

Jak niektórzy wspominali, odejście od Microsoft Way może być uciążliwe. Używanie .NET dla twojego kodu i Oracle dla twojej bazy danych ... to będzie kłopot.

Chcesz utworzyć aplikację internetową .NET i wdrożyć ją w Amazon Web Services ... niezbyt prosto.

Ale jeśli pozostaniesz w ekosystemie Microsoft ... to dziecko będzie śpiewało dla ciebie jak drwiący ptak. W rękach kompetentnego programisty platforma Microsoft jest jak PED dla utalentowanego sportowca. Nie pozwoli to programistom-amatorom na utworzenie następnego Facebooka. Ale da to przewagę utalentowanemu programistowi, który rozumie, jak pasują do siebie elementy.

Argument za darmowym (jak w przypadku piwa) kosztem rozpoczęcia pracy z Ubuntu jest już za progiem, istnieje wiele programów Microsoft, które pozwalają rozpocząć korzystanie z ich narzędzi za darmo. W tym Bizspark, który daje Twojej firmie startowej 3 lata licencji (w tym licencje na wykorzystanie produkcyjne ich narzędzi). I Dream Spark, która daje go studentom za darmo.

Biorąc to pod uwagę, jeśli chcesz eksplorować i uczyć się nowych języków i platform, znajdziesz lepsze narzędzia do rozpoczęcia pracy w Ubuntu, a jeśli szukasz pracy poza ekosystemem Microsoft, musisz znać z Ubuntu.

Michael Brown
źródło
7
Tak, zgadzam się. Po napisaniu przez jakiś czas niskiego poziomu kodu C / Unix w środowisku Linux, postanowiłem zrobić sobie przerwę i trochę popracować nad grafiką w języku C #, odpaliłem nowego VS i, cóż, było to, co najmniej, wyzwalające. To nie jest tak elastyczne, ale z pewnością ułatwia rzeczy, jeśli nie masz nic przeciwko sprzedaży duszy Micr .. to znaczy, poszerzaniu horyzontów!
Thomas
3
Tak +1 za mile widziane antidotum na niedoinformowane strzelanie przeciwko MS.
Alan B
15

Do pisania programów używam zarówno narzędzi, IDE, jak i edytorów tekstu z C ommand- L ine I nterface (zwanych dalej CLI ).

Linux oferuje przydatny interfejs CLI, zaczynając od instalacji domyślnej. Jeśli nie potrzebujesz tego, a mimo to używasz tylko IDE, nie ma już dużej różnicy (IMHO).

IDE

  • IDE są bardzo dobre, jeśli chodzi o integrację wielu funkcji i przedstawienie ich w graficznym interfejsie GUI.
  • Minusem jest to, że może przytłoczyć kogoś nowego. Teraz musisz nauczyć się dwóch rzeczy: IDE i języka programowania.

Edytory tekstu i narzędzia CLI

  • Nauczenie się edytorów tekstu i narzędzi CLI.
  • Jeśli coś nie działa, łatwo jest sprawdzić, które narzędzie nie działa zgodnie z oczekiwaniami.
  • Łatwiej jest też wyszukiwać problemy z Google, ponieważ wszystko opiera się na tekście.
  • Programowanie za pomocą edytorów tekstu i narzędzi CLI jest szybsze i bardziej responsywne, szczególnie w porównaniu do starszych urządzeń.
  • Możesz z nimi pracować nawet na ekranach o niskiej rozdzielczości.
  • Umożliwia programowanie i debugowanie przy minimalnych zasobach na zdalnym serwerze.

Często prototypuję za pomocą narzędzi tekstowych. Później, gdy jest więcej plików do zarządzania, doceniam narzędzia refaktoryzacyjne oferowane przez IDE.

MadMike
źródło
8
Dla przyszłego odniesienia, CLI jest skrótem interfejsu wiersza poleceń. CLI zazwyczaj odnosi się do interfejsu takiego jak aptitude, który jest podobny do GUI, ale w tekście. Vim byłby edytorem CLI, ale grepnie byłby CLI, nie ma interfejsu (byłoby to po prostu narzędzie wiersza poleceń)
kiri
Ujednoznacznienie jest dobre. Interfejs CLI pochodzący z tła programowania systemu Windows może oznaczać infrastrukturę języka wspólnego .
jltrem
Używam GUI do tworzenia GUI oraz edytora tekstowego do programowania CLI lub programów / treści tekstowych. Nigdy nie próbowałbym napisać aplikacji Vim o dużej mocy graficznej, Visual C # sprawia, że ​​prototypowanie takich rzeczy jest łatwe. Podobnie, nigdy nie zajmowałbym się tworzeniem stron internetowych (PHP / HTML / CSS / JS itp.) W środowisku IDE w systemie Windows, ponieważ robienie tego w Vimie na moim serwerze jest nieskończenie bardziej wydajne i wygodne.
Dan
@ minerz029 CLI to programy w stylu grep (jedna linia poleceń na raz). Myślisz o „aplikacjach konsolowych”, które są w stylu aptitude / vim.
Izkata
4
@ minerz029 Interfejs dla grepargumentów, stdin i stdout - słowo nie oznacza nic graficznego ani pseudo-graficznego. Inne typy interfejsów obejmują sieciowe interfejsy API, protokoły szeregowe i tak dalej.
Izkata
12

Wrzucę moją odpowiedź na ring (choć uważam, że te wszystkie też są dobre).

Najbardziej podstawową odpowiedzią, jaką można uzyskać, jest to, że chodzi o filozofię.


W świecie Microsoft jest to trochę religijne - masz bogów na Mt. Redmond, do którego należy złożyć petycję, jeśli chcesz coś zrealizować. Czasem będą słuchać, innym razem wasze ofiary i prośby spadną na głuche uszy. Być może polowali. Microsoft kontroluje cały ekosystem - jest właścicielem systemu operacyjnego, posiada IDE i łączy je ze sobą w sposób, który prawdopodobnie nie jest odpowiedni do rozmowy w sieci SE. Nawet w IDE elementy są ściśle ze sobą powiązane - można to nazwać zintegrowanymale myślę, że sprzężenie jest dokładniejsze. Jeśli chcesz coś nieco zmienić, Gates zabrania, abyś chciał coś zmienić w sposób, na który ani projektanci Windows, ani Visual Studio nie zezwolili wyraźnie. A potem wrzuć technologie, takie jak IE, IIS, serwery Microsoft, MS SQL Server i Office ... i wszystko jest fajną, dużą, szczęśliwą rodziną. Ale jeśli chcesz zostawić część rodziny za sobą? wzdrygnij się !


Z drugiej strony, masz Linuksa, który wywodzi się z filozofii uniksowej, że każdy kawałek powinien być odpowiedzialny za swoją własną małą sferę odpowiedzialności. Powinien zrobić jedną rzecz i zrobić to dobrze. I najlepiej komunikacja powinna odbywać się za pomocą ciągów tekstowych. Jak inni zwrócili uwagę, sed, awk, grep, itd. Są doskonałym przykładem. Robią jedną rzecz, do której zostali stworzeni , i robią to bardzo dobrze. Jeśli musisz zrobić dwie rzeczy, połącz oba narzędzia. Co jest bardzo łatwe do zrobienia.

Ponieważ sednie oczekuje niczego poza wprowadzaniem danych wejściowych, będzie to tekst, co oznacza, że wszystko , co może wytworzyć tekst, nie musi ponownie wymyślać koła. Mogą po prostu użyć sed. A ponieważ sedprodukuje tekst, wszystko, co może czytać tekst, może korzystać z danych wyjściowych sed. Tekst jest bardzo uniwersalny (istnieją wyjątki od tego) i bardzo łatwo jest łączyć ze sobą tego rodzaju rzeczy.

Nie tylko łatwo je połączyć, ale także bardzo łatwo je rozdzielić - jeśli zdecyduję, że nie muszę już edytować strumienia, ale chcę filtrować wyniki, zamiast przekazywać tekst sed, mogę przekazać go grepzamiast.

Jest to podstawowa filozofia rozwoju w środowisku Linux - więc nawet jeśli stamtąd pójdziesz wyżej, wiele narzędzi zapewnia podobne rodzaje interfejsów. Pozwalają rozłożyć je na części lub połączyć się z nimi za pomocą wiersza poleceń, portów lub protokołu HTTP.

A nawet gdyby tak nie było, masz również oprogramowanie typu open source. Większość (jeśli nie wszystkie) oprogramowania na platformie Linux jest oprogramowaniem typu open source. Jeśli więc nie podoba ci się, jak napisano, jesteś w stanie całkowicie, całkowicie, samodzielnie zmienić oprogramowanie. Jest to niezwykle wzmacniające. Nie możesz rozdzielić tego IDE tak, jak chcesz? Dokonaj zmian i prześlij je z powrotem, lub rozwidlaj projekt. Nie wiesz, dlaczego coś się tak zachowuje? Użyj źródła, Luke! Potrzebujesz być w stanie zautomatyzować coś za pomocą wiersza polecenia? Włam się do projektu i wprowadzaj zmiany. Napotkasz błąd lub problem bezpieczeństwa? Hej, zgadnij co - możesz to naprawić samodzielnie, nie musisz czekać na pojawienie się SP3.432vb89234.startdate1eQ.

Możesz łączyć narzędzia, które chcesz i których potrzebujesz. A jeśli jest coś na twojej drodze, jesteś w 100% w stanie to zmienić. Nawet jeśli nie masz takiej możliwości, z pewnością możesz zapłacić komuś, kto opracuje tę zmianę - lub nawet zasugerować ją komuś innemu, kto ma wiedzę.

Powodem, dla którego jest to lepsze w programowaniu, jest to, że gdy natrafisz na tarcie , możesz je wyeliminować z przepływu pracy. Ponieważ rozwój jest trudny , jest wiele rzeczy, o których musisz myśleć, aby odnieść sukces jako programista, a im więcej musisz myśleć o tym, tym trudniej jest myśleć o innych rzeczach .

Kluczem jest wyeliminowanie tarcia.

Więc jeśli religia ekostystemu Microsoft jest miejscem, w którym czujesz się jak w domu, i tak bardzo lubisz narzędzia, że ​​nie zapewnia ci to żadnych tarć ... cóż, to prawdopodobnie jest w porządku.

Ale jeśli nie pasujesz do Microsoft Mold (tm), zgłoszony do opatentowania, wpadniesz w tarć. Rozwój będzie bólem. Za każdym razem, gdy chcesz, możesz coś zrobić, ale nie możesz, co spowoduje wyczerpanie cennych zasobów poznawczych. A jeśli tak, to środowisko programistyczne dla Linuksa jest prawdopodobnie dla Ciebie.

Wayne Werner
źródło
1
Bardzo podobały mi się eseje, które połączyłeś, dziękuję.
Gareth Davidson
3
Chwal Balmer i niech wszystkie jego bity parzystości są ustawione poprawnie. ACK. ACK. ACK.
Warren P,
9

Chciałbym przekazać moje ogólne przemyślenia na temat pytania:

„Dlaczego Linux jest lepszym środowiskiem do programowania?”

Myślę, że najważniejszym powodem, dla którego warto rozwijać się w systemie Linux jest to, że masz pełny wgląd w większość wewnętrznych elementów oprogramowania. Możesz się dowiedzieć, jak rzeczy działają, jeśli jesteś zainteresowany. To pozwala nauczyć się i dostosowywać dobre lub złe praktyki, widząc je w działaniu. Pozwala to na większą różnorodność twoich pomysłów.

schmijos
źródło
2
Słuszna uwaga. Open source jest naturalną korzyścią dla wszystkich programistów, którzy mają jakąkolwiek ciekawość. W systemie Windows żółwie są całkowicie w dół!
Warren P
Trafne spostrzeżenie. Masz wgląd w wewnętrzne elementy oprogramowania
Anwar,
Wielu programistów Windows będzie pracować przez całe życie na platformie Windows, programując w oparciu o API, którego nigdy nie zobaczą. Coś w rodzaju więzienia dla umysłu, nie sądzisz?
Warren P,
@WarrenP Jeśli interfejs API jest poprawnie udokumentowany, nie będziesz się więcej o nim uczył, patrząc na kod źródłowy. (Przyznaję, że wiele interfejsów API nie jest w pełni udokumentowanych, w obu światach.)
svick,
8

Dlaczego Linux jest lepszy do programowania

IDE

Oprócz Visual Studio i Xcode, które służą do określonych celów, najpopularniejsze IDE są wieloplatformowe. Mogłoby się wydawać, że istnieją dziesiątki gazillionów IDE dla dziesiątek języków, ale ostatecznie większość z nich oparta jest na Eclipse , IntelliJ IDEA lub NetBeans . Łączy je to, że wszystkie są oparte na Javie. Java działa bardziej wydajnie w systemie Linux niż w jakimkolwiek innym systemie operacyjnym na tym samym sprzęcie. W rzeczywistości Java jest o 20% szybsza w systemie Linux niż w systemie OS X na tym samym sprzęcie. Wiele z tych IDE jest gotowych do instalacji jednym kliknięciem w Centrum oprogramowania Ubuntu.

Kompilator

GCC bardzo stało się standardem branżowym. Bez wątpienia jego podstawową platformą jest Linux, gdzie jest najlepiej obsługiwany. I to jest bezpłatne i nieodpłatne.

Dodatkowe narzędzia

Linux zapewnia unikalne narzędzia, niedostępne na innych platformach, takie jak na przykład Valgrind (narzędzie do debugowania pamięci, wykrywania wycieków pamięci i profilowania). Linux jest również wyposażony w narzędzia do debugowania, takie jak strace i ltrace , których można użyć do debugowania nawet kodu produkcyjnego (tj. Nieskompilowanego z symbolami debugowania). Równoważne narzędzia dla systemu Windows albo nie istnieją, albo są bardzo drogie i nie zapewniają takiej samej funkcjonalności.

Łatwość instalacji OSS

Ubuntu ma doskonały menedżer pakietów. W większości przypadków instalacja oprogramowania jest po prostu apt-get install package-name(możesz to również zrobić za pomocą GUI, albo Ubuntu Software Center lub Synaptic). Po zainstalowaniu są one automatycznie aktualizowane przez system wraz z wydaniami poprawek. System pakietów również automatycznie śledzi zależności, więc nie musisz się martwić o inne potrzebne pakiety; zostaną zainstalowane automatycznie.

Z drugiej strony, w systemie Windows musisz ręcznie pobrać i zainstalować pakiety, a jeśli wymagają one innych pakietów, musisz to zrobić ręcznie. Nie ma też aktualizacji całego systemu, każdy pakiet oprogramowania albo implementuje swój denerwujący aktualizator, albo w ogóle się nie aktualizuje.

Maszyny produkcyjne najprawdopodobniej będą Linuksem

Jeśli robisz jakiekolwiek programowanie dla back-endu, dla sieci, dla chmury itp., Jest bardzo prawdopodobne, że twoimi komputerami docelowymi jest Linux. Jest mniej nieprzyjemnych niespodzianek, gdy tworzysz system operacyjny tego samego typu, co komputer docelowy.

Oczywiście możesz opracowywać aplikację komputerową dla systemu Windows, ale obecnie jest to niszowy rynek pracy dla programistów.

vartec
źródło
Aplikacje komputerowe dla systemu Windows to niszowy rynek? Co?
Alan B,
2
@AlanB: Nie, programiści aplikacji Windows dla komputerów stacjonarnych są niszowi. Szacuje się, że 90–95% programistów zajmuje się programowaniem wewnętrznym i nie są to najczęściej aplikacje komputerowe. Pomyśl też o tym, kiedy ostatnio kupiłeś (tak jak w rzeczywistości) pieniądze dla aplikacji Windows, która nie była grą (ani produktem Adobe)?
vartec
Z tego, co widzę, prawie wszystko w przestrzeni biznesowej jest zdecydowanie zdecydowanie oparte na komputerach i opłacane, mimo że firmy zorientowane na chmurę ciągle twierdzą, że jest inaczej.
Alan B
4
@AlanB: znowu, nie mówię o rynku użytkowników końcowych. Mówię o rynku pracy dla programistów . Na przykład jedną z aplikacji, o których mówisz, jest MS Office. Cały zespół Office w MS to tylko około 2500 programistów, a wielu z nich nawet nie pracuje nad wersją komputerową.
vartec
7

Dlaczego pisanie programu w plikach tekstowych lub przez terminal jest lepszą opcją (jak czytam) niż używanie IDE takich jak Visual Studio w systemie Windows?

Nie, mogę twierdzić, że jest wręcz przeciwnie. Ogólnie jednak ludzie wolą narzędzia, w których są lepsi. Rodzaj używanych narzędzi może ułatwić pisanie programów. Na przykład mogę napisać programy Java w vimie, ale jest to naprawdę nieproduktywne, w przeciwieństwie do pełnoprawnego IDE, takiego jak Eclipse czy IntelliJ. Jon Skeet dał świetną odpowiedź na pytanie: Po co używać IDE .

Wracając do twojego pierwotnego pytania, jedyną rzeczą, w której Linux jest lepszy, jest programowanie C. Wszystko, co możesz zrobić w systemie Linux, możesz także zrobić w systemie Windows i odwrotnie (pod względem programowania). Programowanie w C jest lepsze w Linuksie ze względów historycznych, oferuje świetny zestaw narzędzi (które można uzyskać w Windows BTW, ale o wiele łatwiej jest skonfigurować dla niego Linuksa). Podobnie, jeśli piszesz C # i lubisz .NET, to Windows jest lepszym wyborem z oczywistych powodów. Wszystko inne jest całkowicie subiektywne, a usłyszysz zalety i wady obu stron.

Daniel
źródło
5
Proszę spróbować skonfigurować <umieścić inny język programowania poza MS's tutaj> środowisko w Windows, zobaczmy, jak daleko to się posuwa.
Braiam
1
@Braiam zrobiłem, Java: P.
Daniel
6
Linux jest lepszy w uruchamianiu czegokolwiek podobnego do Uniksa. Łańcuch narzędzi GCC (który zawiera kompilator C i C ++ oraz inne rzeczy) ma długą tradycję Unix / Posix. Ale jeśli uważasz, że wszystkie programy uniksopodobne to programowanie C, niestety nie jesteś niedoceniony bogatej różnorodności dziedzictwa i narzędzi Unix / Posix / Linux.
Warren P
2
Java jest szczególnym przypadkiem, ponieważ szybko generujesz głęboko zagnieżdżone foldery i wiele plików. A gdy tylko zmienisz nazwy klas lub pakietów, musisz zsynchronizować odpowiednio nazwy plików lub foldery. Zabawa, zabawa, zabawa :)
MadMike,
1
Nie wiem, czy Linux i CLI koniecznie są lepsze do programowania w C (VS jest świetny w C ++, ale brakuje wsparcia dla C99, Posix może być trochę czystszy niż Win32). Ale apt-getjest świetny, jeśli chodzi o rozwój C. Można szybko dostać narzędzia, biblioteki i symbole debugowania dla np sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbgI spróbuj rzeczy łatwo.
Alex Jasmin
6

Jakie narzędzia (edytor tekstu lub IDE), których używasz do programowania, są kwestią wyboru. Ogólnie rzecz biorąc, możesz powiedzieć: początkujący i bardzo małe projekty zwykle używają lepszych edytorów tekstu, takich jak wysublimowany tekst lub zmodyfikowana wersja gedit. Tylko dlatego, że uczysz się więcej, korzystając z edytorów zwykłego tekstu. IDE mogą zepsuć proces uczenia się poprzez automatyzację rzeczy (podobnie jak Visual Studio;)).

Jeśli chodzi o profesjonalistów, którzy bawią się wieloma narzędziami i językami, IDE są przydatne, ponieważ mogą zrobić dla ciebie o wiele więcej, jeśli im na to pozwolisz. Do wyboru jest wiele IDE, w zależności od języka, w którym chcesz programować. Są lepsze i mniej wygodne.

Moje osobiste doświadczenie jest takie, że system operacyjny Ubuntu jest o wiele szybszy i łatwiejszy do skonfigurowania na potrzeby programowania niż Windows. Przypuszczam, że dzieje się tak, ponieważ większość używanych przeze mnie narzędzi i programów jest opartych na systemie Linux i dlatego, że nie muszę przeszukiwać Internetu w poszukiwaniu linków do pobrania do moich ulubionych programów. To tylko „apt-get install program1 program2 program3”. Dla porównania: Potrzebuję 3 dni robocze, aby zainstalować i skonfigurować nową instalację systemu Windows ze wszystkim, czego potrzebuję do programowania (firma, nie prywatna, to byłoby szybsze), ale to tylko jeden dzień na to samo zadanie w Ubuntu.

Z mojego doświadczenia wynika, że ​​programiści, którzy przechodzą na system Linux, mają (przez większość czasu) lepsze zrozumienie kontekstów technicznych i zasad działania. Użytkownicy komputerów Mac i Windows zwykle nie wiedzą, dlaczego coś działa w ten sposób lub dlaczego tak nie jest. Nie jestem pewien, czy naprawdę możesz nauczyć się czegoś od pracy z Linuksem, czy tylko, że ci ludzie będą chcieli się nauczyć przejść na Linuksa.

Mam nadzieję, że mój „blafasel” pomaga trochę ...

mondjunge
źródło
1

Twierdziłbym, że dystrybucja Linuksa to IDE.

Na początek Unix był od samego początku zaprojektowany jako środowisko programistyczne. Został napisany przez programistów dla programistów. Większość Uniksów i Linuksa wciąż jest dostarczana z narzędziami programistycznymi w domyślnej konfiguracji. Brakujące części znajdują się w odległości apt-get(lub ich odpowiednika). Z drugiej strony, Windows jest strasznym środowiskiem programistycznym, dopóki nie zainstalujesz IDE, które nie jest tanie, ani trywialny proces.

IDE jest bardziej zintegrowane, w tym sensie, że IDE są ściślej sprzężone niż używanie GCC, Git i Vi (na przykład). Ścisłe sprzężenie pozwala na lepsze działanie takich rzeczy, jak „intellisense”. Z drugiej strony luźne sprzęgło ma wiele zalet (np. Elastyczność, zamienność, brak blokady).

Postępy w projektowaniu kompilatorów (kompilatory z łatwo rozłącznymi frontami, takimi jak LLVM) mogą ostatecznie oznaczać lepszą obsługę funkcji takich jak wyróżnianie błędów składniowych nawet w luźno powiązanych środowiskach.

david25272
źródło
Więc w zasadzie mówisz, że Linux jest zintegrowanym środowiskiem programistycznym, które tak naprawdę nie jest tak bardzo zintegrowane? :-)
svick,
1

W kwestii filozofii: Ubuntu / Linux zezwala programistom na bezpośredni dostęp do elementów wewnętrznych i sprzętu, podczas gdy Windows jest rodzajem strażnika. Jest to ważna filozoficzna kwestia, jeśli chodzi o programowanie. Tak więc, z filozoficznego punktu widzenia, ta funkcja będąca zaletą będzie zależeć od tego, czy użytkownik jest wystarczająco kompetentny lub technicznie świadomy jej znaczenia.

W kwestii programowania: Cała architektura systemu Ubuntu / Linux oparta jest na tradycji uniksowych małych, prostych programów wykonujących jedną rzecz, a następnie łączących je w całość, aby robić bardziej złożone rzeczy. Dla programisty ta architektura jest niesamowicie potężna i, moim zdaniem, jest powodem, dla którego Unix na dłuższą metę zwycięży w porównaniu z każdą inną architekturą oprogramowania na każdej platformie. Jednym z niewielu miejsc, w których Unix obecnie nie dominuje, jest pulpit, ale z czasem to się zmieni. Dystrybucje takie jak Ubuntu pomagają przejrzeć tę ewolucję.

Nie podważam jednak, że w systemie Windows jest kilka bardzo dobrych środowisk programistycznych. Do programowania w środowisku korporacyjnym często dominują.

AsymLabs
źródło
0

Szybkość to rodzaj odpowiedzi.

Uważam, że w przypadku graficznego IDE, takiego jak Visual Studio lub QtCreator, zbyt często używam myszy, kiedy powinienem używać skrótów. Za każdym razem, gdy zmieniasz kontekst, musisz zatrzymać mózg, skupić się na celu i poczekać na akcję. Natomiast naciśnięcie F5 jest nieskończenie szybsze.

Teraz, jeśli używasz vima, Emacsa lub czegoś innego, co nie ma ładnie wyglądających przycisków, skupisz się na naciśnięciach klawiszy, masz jedną metodę i stajesz się szybszy, ponieważ jest to rutyna.

Błędy są prezentowane w bardziej szczegółowy sposób z interfejsem wiersza poleceń, który preferuję, a także daje informacje zwrotne podczas kompilacji. Jedną z rzeczy, których nienawidzę w programie Visual Studio, jest domyślna ikona z informacją o wykonywaniu kompilacji, a następnie wyświetlana jest lista błędów.

Przy wąskim widoku zachowasz szerokość 80 kolumn, która pomaga w czytelności, widziałem kod rozciągający się na szerokość 200 kolumn. Dzięki dopasowaniu kodu do 80 kolumn możesz mieć jednocześnie otwarte 4/5 okien.

Za pomocą edytora CLI możesz kodować zdalnie, bez potrzeby powolnej (w porównaniu z tekstem) sesji RDP do programu Visual Studio. Możesz kodować przez łącze GSM.

Wizualny rozwój formy jest do bani. Jedną z zalet, które możesz nałożyć na GUI IDE, jest to, że możesz rysować ekrany i to szybciej. Jednak z mojego doświadczenia wynika, że ​​jest to w porządku dla prototypu, ale często osiągasz lepsze wyniki, wykonując go ręcznie w kodzie. Analizator kodu VS2012 dziś rano ostrzegł mnie przed ponad 200 problemami z kodem wygenerowanym automatycznie przez Visual Studio?!?!?

Phil Hannent
źródło
0

Myślę, że Twoim prawdziwym pytaniem może być: „Czy są jakieś alternatywy dla Visual Studio, które będą działały na Ubuntu, skoro tak nie będzie?”

MonoDevelop.

Jest to wykonalne, ale będziesz go nienawidzić, jeśli przyzwyczaisz się do VS i wszystkich funkcji.

Korzystanie z edytora tekstu NIE MA żadnej korzyści. Pamiętasz tę miłą rzecz o nazwie Intellisense? Nic się nie dzieje (ale MonoDevelop ma coś takiego). Mam nadzieję że to pomoże.

Xavier J
źródło