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?
application-development
programming
Muhammad Charaf
źródło
źródło
vim
ich. To bardzo subiektywny obszar! Wiele osób korzysta z IDE w Linuksie, więc łączysz tutaj wiele rzeczy.Odpowiedzi:
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ć.
źródło
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 PSChciał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 :
Och, słyszałeś fantastycznego edytora dla Haskell:
To samo z bibliotekami C / C ++ , tylko
apt-get install
je, a pliki binarne i nagłówki przechodzą do odpowiednich folderów, i możesz po prostu#include
je 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.
źródło
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.The MacPorts Project currently distributes 17699 ports
. Jedną różnicą jest to, że zawsze się kompiluje.yum
,pacman
,emerge
,petget
,pkgadd
...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.
źródło
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
Edytory tekstu i narzędzia CLI
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.
źródło
grep
nie byłby CLI, nie ma interfejsu (byłoby to po prostu narzędzie wiersza poleceń)grep
argumentó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.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ż
sed
nie 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żsed
produkuje tekst, wszystko, co może czytać tekst, może korzystać z danych wyjściowychsed
. 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ć gogrep
zamiast.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
ekostystemuMicrosoft 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.
źródło
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.
źródło
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.
źródło
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.
źródło
apt-get
jest świetny, jeśli chodzi o rozwój C. Można szybko dostać narzędzia, biblioteki i symbole debugowania dla npsudo apt-get install libcurl4-openssl-dev
,sudo apt-get install valgrind
,sudo apt-get install libz-dbg
I spróbuj rzeczy łatwo.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ę ...
źródło
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.
źródło
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ą.
źródło
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?!?!?
źródło
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.
źródło