Ubuntu'nun programlama ortamı olarak Windows üzerinde sağladığı avantajlar nelerdir?


59

Neden bir program metin dosyalarına veya terminal aracılığıyla Windows'ta Visual Studio gibi IDE (ler) kullanmaktan daha iyi bir seçenek (okuduğum gibi)? Bir IDE'nin sağladığı özellikler var mı (örneğin derleme hatalarını göstererek) veya manuel bir işlem mi?


16
Bazı insanlar uzun zamandır programlama yapıyorlar ve metin odaklı bir komut isteminden ne yaptıklarını yaparken oldukça etkili oldular. Editörleri de beğenilerine göre beğenebilirler vim. Bu çok öznel bir alan! Pek çok insan IDE'leri Linux'ta kullanıyor, bu yüzden burada birden fazla şeyi birbirine karıştırıyorsunuz.
Warren P

3
IDE'lerin sorunun asıl amacı olmadığını düşünüyorum . Linux işletim sistemleri için birçok IDE vardır . Örneğin, tüm JetBrains IDE'leri (IntelliJ / PyCharm vb.) Linux üzerinde çalışır. Eclipse linux üzerinde çalışır. QtCreator linux üzerinde çalışır.
Bakuriu

12
Bu sitede yer alan bu soru, onaylama yanlılığından zarar görecek .
zzzzBov

5
Soruyu meta-tartışmadan uzak tutmak için, özellikle ele almak için ayrı bir Meta konusu açtım .
Oli

4
Lütfen daha fazla anlam ifade etmek için, özellikle unvanı değiştirmek için bu soruyu tekrar yazın. Ubuntu sizi IDE'lerden uzak tutmaya ve Windows'tan daha fazla yazılım geliştirme için metin editörlerine sadık kalmaya zorlamıyor.
Reinier Post

Yanıtlar:


87

Bu tür bir varsayım, Programcılar'da daha iyisini yapabilir. SE, çünkü burada oldukça tek taraflı olabilir. Bu, birkaç yıldır .NET geliştiricisi olduğumu ve Visual Studio'ya bağlı olduğumu söyledi. Sizin için ve evet, sizin için çok şey yapar, özellikle de entegre hata ayıklayıcısını seviyorum ... Ancak, insanların Linux'u seçmesinin birkaç nedeni olduğunu düşünüyorum:

  • Ubuntu ücretsizdir. Windows ve VS oldukça pahalı olabilir.

  • Ubuntu ücretsizdir . Windows ve VS, onları nasıl kullandığınız konusunda çok az kontrol sağlar.

  • Ubuntu kutudan çıkan bir programlama ortamıdır. Bash gibi araçlar, grep, sed, awk. Windows, tarihsel olarak altından yazı yazmak büyük bir acı. Toplu iş dosyaları çok kötüdür ve hatta PowerShell ile Windows'taki komut satırı deneyimi Bash ve GNU araçlarına kıyasla önemsizdir. Bunların bir kısmını Windows'a taşıyabilirsiniz ancak bu aynı deneyim değildir.

  • Karmaşık kurulumlar, Puppet , Chef , Juju , Fabric ve basit komut dosyaları apt-getgibi araçlarla otomatikleştirilmesi ve çoğaltılması kolaydır.

  • Bazı şeylerin karmaşık IDE'lere ihtiyacı yoktur. Bugünlerde bir Python geliştiricisiyim ve kendi yerleşik araçları ve hata ayıklayıcısından tamamen memnunum. Bir metin editörü, komut satırı ve kumaş kullanıyorum ... Ve kontrol altına almıştım. Webapps'imi tek bir Fabric komutuyla oluşturabilir, test edebilir, taahhüt edebilir ve dağıtabilirim.

    Monolitik IDE olmadığı söylenemez. Tutulma ve Netbeans. MonoDevelop. KDevelop4 ve QT Oluşturan. Hepsinde, kendileri tarafından yemin eden kullanıcıları var.

Ubuntu sizin için daha mı iyi ? Kim bilir. Çok yetenekli ve özelleştirilebilir bir sistem. Size bir şans verirseniz ve iş akışınızı size yardımcı olması için değiştirirseniz, yapışmasını sağlamalısınız.


18
"Ücretsiz" hem maliyet hem de güçlükle ilgilidir. Mac kullanıyorum, ancak Vagrant gibi bir araç, herhangi bir proje için temiz bir Linux VM kurmayı ve proje bittiğinde atmayı kolaylaştırıyor. "Ne istiyorum?" tek dikkate değer, "bu işletim sistemi için bir lisans anahtarım var mı ve nasıl tanınmasını sağlarım ...?"
Nathan Long

14
+1 Pek çok kişi "Windoze herşeyi berbat" tutumu ile kolayca uyuyakalınca, nesnel kalmak için.
Phil

2
Dikkat edilmesi gereken bir şey, görsel stüdyo eskisinden daha özgür , bir süredir MAKE dosyalarını destekledi ve eklentiler tamamen Visual Studio içinde cygwin uygulamaları yazıp hata ayıklamanıza izin veriyor .
Scott Chamberlain

6
even PowerShell scripts lack the power of Bash- PS'yi çok iyi tanımadığınızı iddia ediyorum; son derece güçlü ve Bash'de yapabileceğiniz PS'de yapamayacağınız hiçbir şeyle karşılaşmadım
Mark Henderson

4
@MarkHenderson Evet, kesinlikle yeterince kullanmamak yeterli. Windows ve .NET'i geride bıraktığım gibi sunuldu. Sanırım Bash (ve "Bash" ile gerçekten GNU demek istedim) yanıma aldım çünkü her yerde ve her şey için kullanıyorsunuz . PS her zaman çok fazla Googling'e ihtiyaç duyuyordu, çünkü her şey sadece her zaman süper uzmandı. Bash ile çok uzun zaman sonra söylemek gerçekten zor.
Oli

37

Yine de bir önemli sebep daha eklemek istiyorum; Ubuntu yeni kütüphaneleri, dilleri, IDE'leri ve derleyicileri denemek için mükemmeldir. Her şey bir apt-get uzağa.

Demek Haskell adında süslü bir dil duydun :

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

Ah, Haskell için süslü bir editör duydun:

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

Aynı C / C ++ kütüphanelerinde, sadece siz apt-get installve ikili dosyalar ve başlıklar doğru klasörlere gidersiniz ve #includekaynak dosyalarınız, nereye yerleştirildiklerini kontrol etmenize gerek kalmadan sadece onları girebilirsiniz !

Temelde, günlük çalışma ortamınızı ne kadar hızlı ayarlayabileceğinizle ilgili değil. Aynı zamanda deneysel bir ortamı ne kadar hızlı kurabileceğinizle de ilgilidir. Linux altında öğrenme deneyimini hızlandıran şeyin bu olduğuna inanıyorum.


36
apt-getve her şeyin bu şekilde kurulabilir olması gerektiği zihniyeti, belki de Linux ile ilgili en iyi şey. Ne OSX, ne de Windows burada karşılaştırmaz.
Nathan Long

11
Evet, ancak her uygulamanın yükleyicisini manuel olarak getirmeniz gerekiyor: içinde aynı yükleyiciyi kullandıkları gerçeği size fazla bir şey satın almıyor ( onlara biraz çaba sarf ediyor). Bu yerleşik bir paket yöneticisiyle aynı değil.
Yararsız

2
@NathanLong Macports kullanarak aynı şeyi yaptım: sudo port install ghc. Kaynaklardan taze derlenmiş. The MacPorts Project currently distributes 17699 ports. Bir fark, daima derlenmesidir.
Alecail

2
@karadeniz: Ve bu söz değil yum, pacman, emerge, petget, pkgadd...
Aesin

2
MacPorts'u severim (ve orada ve Homebrew'te birkaç paket bulundururuz), ancak gerçekten Debian ile karşılaştırılamaz. Bu küçük projeler, aynı standartta büyük bir depoyu muhafaza edecek kişi gücüne sahip değil. Aynısı cygwin için de geçerli ve Windows tarafında da coapp. Önemli fark kültüreldir, bence, linux paket yöneticileri sistemin bir parçasıdır ve herkes tarafından her şey için kullanılmaktadır, bunlar hafifçe ihmal edilmiş bir eklenti suyu değildir.
jcupitt

20

İşte öncelikle Microsoft platform geliştiricisinin bir görüşü. .NET ekosistemini hedeflemiyorsanız, en iyi seçeneğinizin Ubuntu olduğunu iddia ediyorum. Windows yerine Ubuntu'daysanız, hemen hemen her platform / dil için araçlar edinmek, yapılandırmak ve kullanmak için çok daha kolay bir zamana sahip olacaksınız.

Microsoft'un araç zincirinin değeri, BÜYÜK bir şekilde entegre edilmiş olmasıdır. IDE'den Kaynak Kontrol, Proje Yönetimi, Yapım, Yerleştirme, Veri Tabanı, Bulut Altyapısı, reklam müzesine . Microsoft, platformlarıyla tam anlamıyla iç içe geçiyorsanız, ÇOK kolaylaştırır.

Bazılarının belirttiği gibi, Microsoft Way'den sapmak acı verici olabilir. Kodunuz için .NET'i ve veritabanınız için Oracle'ı kullanmak ... bu acı verici olacak.

Bir .NET web uygulaması oluşturmak ve onu Amazon Web Services'e dağıtmak ... çok basit değil.

Ama Microsoft Ekosisteminde kalırsanız ... bu bebek sizin için alaycı bir kuş gibi şarkı söyler. Yetkili bir yazılım geliştiricinin elinde bulunan Microsoft Platformu, yetenekli bir sporcu için PED'ler gibidir. Bir amatör programcının bir sonraki Facebook'u yaratmasını mümkün kılmayacak. Ancak parçaların birbirine nasıl uyduğunu anlayan yetenekli bir geliştiriciye avantaj sağlayacaktır.

Ücretsiz (birada olduğu gibi) Ubuntu ile çalışmaya başlamanın argümanı kapının dışında, Microsoft'un araçlarıyla ücretsiz olarak başlamanıza izin veren bir dizi program var. Başlangıç ​​şirketinize 3 yıl lisans veren Bizspark dahil (araçlarının üretim kullanım lisansları dahil). Ve öğrencilere ücretsiz veren Hayal kıvılcımı.

Bununla birlikte, yeni dilleri ve platformları keşfetmek ve öğrenmek istiyorsanız, Ubuntu'da başlamak için daha iyi araçlar bulacaksınız ve Microsoft ekosistemi dışında bir iş arıyorsanız, aşina olmanız gerekecek. Ubuntu ile.


7
Evet, katılıyorum. Linux ortamında bir süre düşük seviyeli C / Unix kodunu yazdıktan sonra bir mola vermeye ve bazı C # grafik geliştirmelerine karar verdim, yeni VS'yi başlattım ve en azından söyleyebilmeyi özgürleştirdi. O kadar esnek değil ama ruhunuzu Micr'e satmakta sakınca duymuyorsanız, işleri kolaylaştırır .. Yani, ufkunuzu genişletmek demek istiyorum!
Thomas

3
Hoşgeldinli bir panzehir için yarı bilgili anti-MS taraması için +1.
Alan B,

15

Birlikte araçları, IDE ve metin düzenleyicileri ikisini de kullanmak C ommand- L ine ben nterface (olarak anılacaktır feryat CLI programlar yazmak için,).

Linux'un sunduğu, varsayılan kurulumdan başlayan kullanışlı bir CLI'dir. Buna ihtiyacınız yoksa ve yine de sadece bir IDE kullanıyorsanız, o zaman artık bir fark yoktur (IMHO).

IDE

  • IDE'ler, birçok özelliğin bütünleştirilmesi ve grafiksel bir GUI'de sunulması konusunda çok iyidir.
  • Dezavantajı ise, bunun için yeni birini boğabilir. Şimdi öğrenmeniz gereken iki şey olacak: IDE ve programlama dili.

Metin editörleri ve CLI araçları

  • Metin editörleri ve CLI araçlarının öğrenilmesi uzun sürmez.
  • Bir şey işe yaramazsa, hangi aletin beklendiği gibi çalışmadığını görmek kolaydır.
  • Her şey metin tabanlı olduğu için Google’la ilgili sorunları daha kolay araştırın.
  • Metin editörleri ve CLI araçlarıyla programlama, özellikle eski donanımlarla karşılaştırıldığında daha hızlı ve daha yanıtlıdır.
  • Düşük çözünürlüklü ekranlarda bile onlarla çalışabilirsiniz.
  • Uzak bir sunucudaki minimum kaynaklarla programlamanıza ve hata ayıklamanıza olanak tanır.

Prototipimi sıklıkla metin tabanlı araçlarla yapıyorum. Daha sonra, yönetilecek daha fazla dosya olduğunda, bir IDE'nin bana sunduğu yeniden düzenleme araçlarına değer veriyorum .


8
Gelecekte referans olması için, CLI komut satırı arayüzünün kısaltmasıdır. CLI tipik olarak , bir GUI'ye benzer, ancak metin halinde, yetenek gibi bir arabirime refere eder . Vim bir CLI editörü grepolacaktı ama CLI olmayacaktı, bir arayüzü yok (sadece bir komut satırı aracı olurdu)
kiri

Belirsizlikler iyidir. Windows programlama geçmişinden gelen CLI, Ortak Dil Altyapısı anlamına gelebilir .
jltrem

GUI geliştirmek için bir GUI ve CLI veya metin tabanlı programlar / içerik geliştirmek için bir metin editörü kullanıyorum. Vim'de GUI ağırlıklı bir iş uygulaması yazmaya asla çalışmam, Visual C # prototip yapmayı zahmetsizce yapar. Benzer şekilde, Windows'ta bir IDE'de asla web geliştirme (PHP / HTML / CSS / JS vb.) Yapmam, çünkü bunu web sunucumdaki Vim'de yapmak çok daha verimli ve kullanışlıdır.
Dan

@ minerz029 CLI grep tarzı programlardır (bir seferde bir komut [satır]). Yetenek / vim tarzı olan "konsol uygulamaları" nı düşünüyorsunuz.
Izkata

4
@ minerz029 Arayüz grepargümanları, stdin ve stdout - kelime grafiksel veya sözde grafiksel bir şey ifade etmiyor. Diğer arayüz tipleri arasında web API'leri, seri protokoller vb. Bulunur.
Izkata

12

Cevabımı halkaya atacağım (bunların hepsinin de iyi olduğuna inanıyorum).

Alabileceğiniz en temel cevap, tamamen felsefe ile ilgili olduğu.


Microsoft dünyasında, biraz dindar - Mt. Uygulanan bir şey istiyorsanız Redmond'a dilekçe verilmesi gerekenler. Bazen dinlerler, diğer zamanlarda fedakarlıklarınız ve memnuniyetiniz sağır kulaklara düşer. Belki de avlanıyorlardı. Microsoft, tüm ekosistemi kontrol ediyor - işletim sistemine ve IDE'ye sahipler ve bir SE ağında konuşması uygun olmayan şekillerde bir araya getiriyorlar. IDE parçaları içinde bile sıkıca bağlanmıştır - entegre olarak adlandırılabilirama birleştiğinde daha doğru olduğunu düşünüyorum. Bir şeyleri biraz değiştirmek isterseniz, Gates, Windows veya Visual Studio tasarımcılarının açıkça izin vermediği bir şeyi değiştirmek isteyeceğinizi yasaklar. Ve sonra IE ve IIS, Microsoft sunucuları ve MS SQL Server ve Office gibi teknolojiler atın ... ve her şey güzel ve mutlu bir ailedir. Ama ailenin bir bölümünü geride bırakmak istersen? Titreme !


Öte yandan, Unix felsefesinden her parçanın kendi küçük sorumluluk alanından sorumlu olması gerektiğini miras alan Linux'unuz var. Bu yapmalıyım tek şey, ve iyi yaparım. Ve tercihen, iletişim metin dizeleri yoluyla yapılmalıdır. Diğerleri işaret gibi, sed, awk, grep, vb bu mükemmel örnekleridir. Onlar do tek yapmaları için tasarlanmıştır şeyi ve çok iyi yaparım. İki şey yapmanız gerekiyorsa , iki aleti birleştirirsiniz. Bunu yapmak çok kolay.

Çünkü sedgirilen giriş dışında hiçbir şey metin olmayacak, bu, metin üretebilecek hiçbir şeyin tekerleği yeniden icat etmesi gerekmediği anlamına geliyor . Basitçe kullanabilirler sed. Ve sedmetin ürettiğinden, metni okuyabilen herhangi bir şey çıktısını kullanabilir sed. Metin çok evrenseldir (bazı istisnalar vardır) ve bu tür şeyleri bir araya getirmek çok kolaydır.

Sadece kolay birleştirmek, ama bunları birbirinden ayırmak için de çok kolaydır - Ben artık bir akış düzenleme gerektiğine karar eğer, ama ben sonuçları filtrelemek istiyorum, benim metin geçirerek yerine sed, ben geçebilir bunun grepyerine.

Şimdi, bu Linux ortamında gelişimin arkasındaki temel felsefedir - oradan yukarı çıksanız bile, birçok araç benzer türden arabirimler sunar. Bunları parçalara ayırmanıza veya komut satırı veya bağlantı noktaları veya HTTP üzerinden arayüz oluşturmanıza izin verir.

O olsa bile Ve değil durum, aynı zamanda açık kaynak yazılımı var. Linux platformundaki çoğu (tümü değilse) yazılımı açık kaynak kodludur. Bu yüzden nasıl yazıldığını beğenmezseniz tamamen, tamamen, kesinlikle yazılımı kendiniz değiştirebilirsiniz. Bu inanılmaz güçlendirici. Bu IDE'yi istediğiniz şekilde parçalayamaz mısınız? Değişiklikleri yapın ve onları ters yönde gönderin veya projeyi doldurun. Bir şeyin neden olduğu gibi davrandığından emin değil misin? Kaynağı kullan, Luke! Komut satırında bir şeyi otomatikleştirebilmeniz mi gerekiyor? Projeyi kes ve değişikliklerini yap. Bir hatayla mı güvenlikle mi karşılaştın? Hey tahmin et ne - kendin düzeltebilirsin, SP3.432vb89234.startdate1eQ'in çıkmasını beklemek zorunda değilsin.

İstediğiniz ve ihtiyacınız olan araçları birleştirebilirsiniz. Ve yolunda olan bir şey varsa,% 100 bunu değiştirebilirsin. Bu kabiliyetiniz olmasa bile, kesinlikle bu değişikliği geliştirmesi için birisine para ödeyebilirsiniz - veya bunu, bilgisi olan bir başkasına bile önerebilirsiniz.

Bunun programlama için daha iyi olmasının nedeni, sürtünme ile karşılaştığınızda , onu iş akışınızdan kaldırabilmenizdir. Gelişme zor olduğu için başarılı bir programcı olmak için düşünmeniz gereken birçok şey vardır ve başka şeyler hakkında düşünmenin zor olduğu hakkında düşünmeniz gerekir .

Sürtünmeyi ortadan kaldırmak çok önemlidir.

Öyleyse, Microsoft ekosistem dinini evinizde hissettiğiniz yerdeyse ve araçlardan o kadar çok zevk alırsanız, size pek fazla / sürtünme sağlamaz.

Fakat Microsoft Kalıp (tm) 'ya uymazsanız, patent bekleyen, o zaman sürtünme ile karşılaşacaksınız. Gelişim acı olacak. Her zaman dilek sen bir şeyler yapabileceğini, ancak, o değerli bilişsel kaynaklarını tüketen ve olmayacaktır. Ve eğer durum buysa, bir Linux geliştirme ortamı muhtemelen sizin içindir.


1
Bağlandığın kompozisyonlardan gerçekten hoşlandım, teşekkür ederim.
Gareth Davidson,

3
Balmer'ı övün ve tüm Eşlik Uçları doğru şekilde ayarlanmış olabilir. ACK. ACK. ACK.
Warren P,

9

Bu soruya daha genel düşüncelerimi iletmek isterim:

"Linux programlama için neden daha iyi bir ortam?"

Bence Linux'ta gelişmenin en önemli nedeni, çoğu yazılımın içindekileri hakkında tam bir bilgiye sahip olmanızdır. İlgilendiğiniz takdirde işlerin gerçekte nasıl yürüdüğünü öğrenebilirsiniz. Bu, iyi ya da kötü uygulamaları eylem halinde görerek öğrenmenizi ve uyarlamanızı sağlar. Bu, fikirleriniz için daha fazla çeşitlilik sağlar.


2
İyi bir nokta. Açık kaynak, herhangi bir merakı olan tüm geliştiricilere doğal bir faydadır. Pencerelerde, tamamen kaplumbağalar!
Warren P

İyi bir noktaya değindin. Burada bir yazılımın içindekiler hakkında bir
fikriniz

Pek çok Windows geliştiricisi tüm çalışma ömürlerini Windows platformunda çalışacak ve diğer tarafını asla görmeyecekleri bir API'ye karşı programlama yapacaktır. Zihin için bir tür hapishane, öyle değil mi?
Warren P,

@WarrenP Bir API düzgün bir şekilde belgelenirse, kaynak koduna bakarak bu konuda daha fazla bilgi almayacaksınız. (Her iki dünyada da pek çok
API'nin

8

Neden programlama için Linux daha iyi

IDE

Özel amaçlarına hizmet eden Visual Studio ve Xcode'ın yanı sıra , çoğu popüler IDE çoklu platformdur. Düzinelerce dil için gazilyon IDE'leri var gibi görünebilir ancak sonunda çoğu Eclipse , IntelliJ IDEA veya NetBeans'a dayanır . Ortak noktaları, hepsinin Java tabanlı olmasıdır. Java, Linux'ta, aynı donanımdaki diğer işletim sistemlerinden daha verimli çalışır. Aslında, Java, Linux'ta, aynı donanımdaki OS X'ten% 20'ye kadar daha hızlıdır. Bu IDE'lerin birçoğu Ubuntu Yazılım Merkezinde bir tıklamayla kuruluma hazırdır.

Derleyici

GCC, endüstri standardı haline geldi. Kuşkusuz, birincil platformu Linux, en iyi şekilde desteklendiği yerdir. Ve ücretsiz ve telifsiz.

Ek araçlar

Linux, örneğin Valgrind (bellek hata ayıklama, bellek sızıntısı algılama ve profil oluşturma için bir araç) gibi diğer platformlarda bulunmayan benzersiz araçlar sunar . Linux ayrıca üretim kodunu bile ayıklamak için kullanılabilecek strace ve ltrace gibi hata ayıklama araçlarıyla birlikte gelir (yani hata ayıklama sembolleriyle derlenmemiş). Windows için eşdeğer araçlar ya yoktur veya çok pahalıdır ve aynı işlevi sağlamamaktadır.

OSS kurulum kolaylığı

Ubuntu'nun mükemmel bir paket yöneticisi var. Çoğu durumda yazılımın yüklenmesi yalnızca apt-get install package-name(bunu GUI ile de yapabilirsiniz, Ubuntu Yazılım Merkezi veya Synaptic). Kurulduktan sonra, hata düzeltme sürümleriyle sistem tarafından otomatik olarak güncellenir. Paket sistemi otomatik olarak bağımlılıkları da takip eder, bu nedenle gereken diğer paketler için endişelenmenize gerek yoktur; otomatik olarak yüklenecekler.

Öte yandan, Windows’ta paketleri manuel olarak indirmeniz ve yüklemeniz gerekir, ayrıca başka paketlere ihtiyaç duyarlarsa, bunu da el ile yapmanız gerekir. Sistem genelinde güncelleme de yoktur, her bir yazılım paketi kendi can sıkıcı güncelleyicisini uygular veya hiç güncelleme yapmaz.

Üretim makineleri Linux olma olasılığı çok yüksektir

Herhangi bir programlamayı arka uç, web, bulut, vb. İçin yapıyorsanız, hedef makinelerinizin Linux olması çok muhtemeldir. Hedef makinenizle aynı işletim sistemi türünü geliştirirken daha az kötü sürprizler var.

Tabii ki, Windows için bir masaüstü uygulaması geliştiriyor olabilirsiniz, ama bugünlerde bu programcılar için bir tür iş piyasası.


Windows için masaüstü uygulamaları bir niş pazar mı? Wha?
Alan B,

2
@AlanB: Hayır, masaüstü programcıları Windows uygulamaları niş. Tahmini programcıların% 90-95'i kurum içi geliştirme yapıyor ve bunlar çoğunlukla masaüstü uygulamaları değil. Ayrıca, bir Windows uygulamasını en son ne zaman (ücretli olarak ödediğiniz) satın aldığınızı, bunun bir oyun olmadığını (ya da bunun için Adobe ürününü değil) düşünün.
vartec

Gördüğüm kadarıyla iş alanındaki hemen hemen her şey hala kararlı bir şekilde iddia ediyor olsa da, bulut merkezli firmaların sürekli olarak iddia ettikleri halde, hala masaüstü tabanlı ve ücretli.
Alan B,

4
@ AlaB: Yine, son kullanıcıların pazarından bahsetmiyorum. Programcılar için iş piyasası hakkında konuşuyorum . Örneğin, bahsettiğiniz uygulamalardan biri MS Office. Yine de, MS'deki tüm Office ekibi sadece yaklaşık 2.500 programcı ve çoğu da masaüstü sürümünde çalışmıyor.
vartec

7

Neden bir program metin dosyalarına veya terminal aracılığıyla Windows'ta Visual Studio gibi IDE (ler) kullanmaktan daha iyi bir seçenek (okuduğum gibi)?

Öyle değil, tam tersi olduğunu iddia edebilirim. Genel olarak, insanlar daha iyi oldukları araçları tercih etme eğilimindedirler. Kullandığınız araçların türü, yazma programlarının kolaylığına yardımcı olabilir. Örneğin, Java programlarını vim ile gayet iyi yazabiliyorum, ancak Eclipse veya IntelliJ gibi tam teşekküllü bir IDE'nin aksine üretkenliği artıyor. Jon Skeet neden IDE kullanmalı sorusuna harika bir cevap verdi .

Asıl sorunuza dönersek, Linux'ta daha iyi olan tek şey C programlama. Linux'ta yapabileceğiniz her şey, Windows'ta da yapabilirsiniz (veya tersi). C programlama Linux'ta tarihsel nedenlerden ötürü daha iyidir, harika bir araç seti sunar (Windows BTW'den alabilirsiniz, ancak bunun için Linux'u kurmak daha kolaydır). Aynı şekilde, C # ve .NET gibi yazıyorsanız, Windows bariz nedenlerden dolayı daha iyi bir seçimdir. Her şey tamamen özneldir ve her iki tarafın artılarını ve eksilerini duyacaksınız.


5
Lütfen, Windows'ta <buraya MS dışında bir programlama dili daha koy> ortamını kurmaya çalışın, ne kadar ileri gittiğini görelim.
Braiam

1
@ Braiam yaptım, Java: P.
Daniel,

6
Linux, Unix benzeri herhangi bir şeyi çalıştırmada daha iyidir. GCC alet zinciri (bir C ve C ++ derleyicisi ve diğer şeyleri içerir) uzun bir Unix / Posix mirasına sahiptir. Ancak, tüm Unix benzeri programlamanın C programlama olduğunu düşünüyorsanız, ne yazık ki Unix / Posix / Linux mirasının ve araçlarının zengin çeşitliliğine maruz kalmazsınız.
Warren P

2
Java , derinden iç içe geçmiş klasörler ve birçok dosya oluşturduğunuz için özel bir durumdur . Sınıfları veya paketleri yeniden adlandırdığınız anda, sırasıyla dosya adlarını veya klasörleri senkronize etmeniz gerekir. Fun fun fun :)
MadMike 17:13

1
Linux ve CLI'nin C programlaması için mutlaka daha iyi olup olmadığını bilmiyorum (VS, C ++ 'da harika ancak C99 desteğinden yoksun, Posix, Win32'den biraz daha temiz olabilir). Ancak apt-getC gelişimi söz konusu olduğunda harika. Hızlı bir şekilde, örneğin için araçlar, kütüphaneler ve hata ayıklama simgeleri alabilirsiniz sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbgVe kolayca şeyler deneyin.
Alex Jasmin,

6

Programlama için kullandığınız araçlar (metin editörü veya IDE) bir seçim meselesidir. Genel olarak şunu söyleyebilirsiniz: Yeni başlayanlar ve çok küçük projeler, yüce metin veya gedit'in değiştirilmiş versiyonu gibi daha iyi metin editörleri kullanma eğilimindedir. Sadece düz metin editörleri kullanırken daha fazlasını öğrendiğiniz için. IDE'ler, öğrenme sürecinizi bir şeyleri otomatikleştirerek bertaraf edebilir (Visual Studio'nun yaptığı gibi).

Profesyonellere gelince, birçok araç ve dille uğraşırken, IDE'ler kullanışlı oluyor, çünkü izin verirseniz sizin için çok daha fazlasını yapabilirler. Programlamak istediğiniz dile bağlı olarak seçebileceğiniz birçok IDE vardır. Daha iyi olanlar ve daha az uygun olanlar da vardır.

Kişisel deneyimim, bir Ubuntu OS'nin geliştirme için kurulum yapmaktan çok daha hızlı ve daha kolay olmasıdır. Sanırım, kullandığım araçların ve programların çoğunun Linux üzerine kurulu olması ve en sevdiğim programların indirme bağlantıları için internette arama yapmak zorunda olmadığımdan. Bu sadece bir 'apt-get install program1 program2 program3'. Buna karşılık: Yeni bir Windows kurulumunu kurmak ve yapılandırmak için 3 iş gününe ihtiyacım var. Programlama için ihtiyacım olan her şey (şirket, özel değil, daha hızlı olur), ancak Ubuntu'daki aynı görev için sadece bir gün.

Tecrübelerime göre, Linux'a programlama için geçiş yapan programcıların (çoğu zaman) teknik bağlamlar ve temellerin nasıl çalıştığı hakkında daha derin bir anlayışa sahip olmaları. Mac ve Windows kullanıcıları bir şeyin neden bu şekilde çalıştığını ya da neden olmadığını bilme eğilimindedir. Gerçekten Linux ile çalışmaktan bir şeyler öğrenebilecek misiniz, yoksa sadece Linux'a geçişi öğrenmeye istekli olduklarından emin değilim.

Umarım "blafasel" biraz yardımcı olur ...


1

Bir Linux dağıtımı iddia ediyorum olan bir IDE.

Başlangıç ​​için, Unix en başından bir geliştirme ortamı olacak şekilde tasarlandı. Programcılar tarafından programcılar tarafından yazılmıştır. Çoğu Unix ve Linux, varsayılan yapılandırmalarında geliştirme araçlarıyla birlikte gelir. Ve eksik kısımlar sadece apt-get(veya eşdeğeri) bir uzağa. Diğer taraftan, Windows, ucuz olmayan bir IDE veya önemsiz bir işlem olana kadar korkunç bir geliştirme ortamıdır.

Bir IDE, IDE'lerin GCC, Git ve Vi (örneğin) kullanmaktan daha sıkı bir şekilde bağlanmış olması anlamında daha entegredir . Sıkı kavrama “intellisense” gibi şeylerin daha iyi çalışmasını sağlar. Ancak öte yandan, gevşek kaplin birçok avantaja sahiptir (örneğin esneklik, değiştirilebilirlik, kilitlenme eksikliği).

Ve derleyici tasarımındaki gelişmeler (LLVM gibi kolayca ayrılabilen ön uçları olan derleyiciler) sonunda gevşek bağlanmış ortamlarda bile vurgulanan sözdizimi hatası gibi özellikler için daha iyi destek anlamına gelebilir.


Yani, temelde Linux'un aslında bütünleşik olmayan bir Entegre Geliştirme Ortamı olduğunu söylüyorsunuz. :-)
svick

1

Felsefe konusunda: Ubuntu / Linux, bilgisayar programcısının dahili ve donanıma doğrudan erişmesine izin verirken, Windows bir tür kapı bekçisidir. Programlama söz konusu olduğunda bu önemli bir felsefi sorun. Bu nedenle, felsefi olarak konuşursak, bu özelliğin bir avantaj olması, kullanıcının yeterince bilgili olup olmamasına veya bunun öneminin teknik olarak farkında olmasına bağlı olacaktır.

Programlama konusunda: Ubuntu / Linux'un tüm sistem mimarisi, Unix'in küçük, basit programların bir şeyi yapan geleneği üzerine kuruludur ve daha sonra bunları daha karmaşık şeyler yapmak için birleştirir. Bir programcı için bu mimari inanılmaz derecede güçlü ve bana göre Unix'in her platformdaki diğer her yazılım mimarisine karşı uzun vadede hakim olmasının nedeni bu. Unix'in şu anda baskın olmadığı az sayıdaki yerlerden biri masaüstüdür, ancak zamanla değişecektir. Ubuntu gibi dağıtımlar bu evrimi görmeye yardımcı oluyor.

Bununla birlikte, Windows’ta bazı çok iyi programlama ortamları olduğu konusunda itiraz etmiyorum. Kurumsal bir ortamda programlama için, bunlar genellikle baskındır.


0

Hız sıralama cevabıdır.

Visual Studio ya da QtCreator gibi grafiksel bir IDE ile kısa yollar kullanmam gerektiğinde fareyi çok fazla kullandığımı görüyorum. Bağlamı her değiştirdiğinizde, beyninizi duraklatmak, hedefinize odaklanmak ve eylemi beklemek zorundasınız. Oysa F5'e basmak sonsuz derecede daha hızlı.

Şimdi vim, Emacs veya hoş görünümlü düğmelere sahip olmayan başka bir şey kullanıyorsanız, tuşlara basmaya odaklanacaksınız, bir yönteminiz var ve daha hızlı hale geliyorsunuz çünkü rutini.

Hatalar tercih ettiğim bir komut satırı arayüzü ile daha ayrıntılı bir şekilde sunuluyor ve derleme sırasında da geri bildirim veriyor. Visual Studio'dan nefret ettiğim tek şey, varsayılan ayardır, derleme yaptığını gösteren küçük bir simgedir, ardından bir hata listesi çıkarırsınız.

Dar bir görünümle okunabilirliğe yardımcı olan 80 sütun genişliğini koruyacaksınız, 200 sütun genişliğine kadar uzanan bir kod gördüm. 80 sütuna sığacak kodla, bir seferde 4/5 pencere açabilirsiniz.

Bir CLI editörü ile uzaktan kod yazabilirsiniz, Visual Studio'nuz için yavaş (metne kıyasla) RDP oturumu gerekmez. Bir GSM bağlantısı üzerinden kod yazabilirsiniz.

Görsel form geliştirme türü berbat. Bir GUI IDE'ye koyabileceğiniz bir avantaj, ekranlarınızı ve daha hızlı çizebilmenizdir. Ancak benim deneyimlerime göre bir prototip için para cezası ama çoğu zaman manuel olarak kodda yaparak daha iyi sonuçlar alıyorsunuz. Bu sabah VS2012 Kod Analizcisi, Visual Studio tarafından otomatik olarak oluşturulan kodla ilgili 200'den fazla sorun hakkında beni uyardı.?!?


0

Asıl sorunuzun, "Ubuntu’da yayınlanacak bir Visual Studio alternatifi var mı, olmayacak mı?" Olabileceğini düşünüyorum.

MonoDevelop.

İşe yarar, ancak VS'e ve tüm özelliklere alışkınsanız bundan nefret edersiniz.

Bir metin editörü kullanmanın hiçbir avantajı yoktur. Intellisense adındaki hoş şeyi hatırlıyor musun? Olmuyor (ama MonoDevelop'un buna benzer bir şeyi var). Bu yardımcı olur umarım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.