Apa keuntungan yang dimiliki Ubuntu daripada Windows sebagai lingkungan untuk pemrograman?


59

Mengapa menulis program dalam file teks atau melalui terminal pilihan yang lebih baik (seperti yang saya baca) daripada menggunakan IDE seperti Visual Studio pada Windows? Apakah fitur yang disediakan IDE ada di sana (mis. Menunjukkan kesalahan kompilasi) atau apakah itu proses manual?


16
Beberapa orang telah melakukan pemrograman untuk waktu yang lama, dan menjadi sangat efektif dalam melakukan apa yang mereka lakukan dari command prompt yang digerakkan oleh teks. Mereka mungkin juga menemukan editor suka vimdengan keinginan mereka. Ini adalah area yang sangat subyektif! Banyak orang menggunakan IDE di Linux, jadi Anda menggabungkan banyak hal di sini.
Warren P

3
Saya percaya IDE bukanlah poin utama dari pertanyaan. Ada banyak IDE untuk OS linux. Sebagai contoh, semua JetBrains IDEs (IntelliJ / PyCharm dll.) Berfungsi di linux. Eclipse bekerja di linux. QtCreator bekerja di linux.
Bakuriu

12
Pertanyaan ini berada di situs ini akan menderita bias konfirmasi .
zzzzBov

5
Dalam upaya menjaga pertanyaan dari meta-diskusi, saya telah membuka topik Meta terpisah untuk secara khusus mengatasinya .
Oli

4
Harap ulangi pertanyaan ini agar lebih masuk akal, khususnya judulnya. Ubuntu tidak memaksa Anda untuk menghindari IDE dan tetap menggunakan editor teks untuk pengembangan perangkat lunak seperti halnya Windows.
Reinier Post

Jawaban:


87

Hipotetis semacam ini mungkin lebih baik pada Programmer.SE karena itu mungkin cukup sepihak di sini. Yang mengatakan, saya adalah seorang pengembang NET. Selama beberapa tahun dan mulai bergantung pada Visual Studio. Itu banyak membantu Anda dan ya, saya terutama suka debugger terintegrasi ... Namun, saya pikir ada beberapa alasan orang memilih Linux:

  • Ubuntu gratis. Windows dan VS bisa sangat mahal.

  • Ubuntu gratis . Windows dan VS memberi Anda sedikit kontrol atas cara Anda menggunakannya.

  • Ubuntu adalah lingkungan pemrograman langsung dari kotak. Alat seperti Bash, grep, sed, awk. Windows secara historis merupakan masalah besar di bagian bawah untuk skrip. File batch mengerikan dan bahkan dengan PowerShell, pengalaman baris perintah di Windows tidak berarti jika dibandingkan dengan Bash dan alat GNU. Anda dapat port beberapa ke Windows tetapi itu bukan pengalaman yang sama.

  • Pengaturan yang rumit mudah untuk diotomatisasi dan direplikasi melalui apt-get, alat-alat seperti Wayang , Koki , Juju , Kain dan skrip sederhana.

  • Beberapa hal tidak memerlukan IDE yang rumit. Saya seorang pengembang Python hari ini dan saya sangat senang dengan alat bawaan dan debuggernya sendiri. Saya menggunakan editor teks, baris perintah dan fabrikasi ... Dan saya jauh lebih memegang kendali daripada saya di bawah. NET. Saya dapat membangun, menguji, melakukan, dan menggunakan aplikasi web saya dengan satu perintah Fabric.

    Itu tidak berarti tidak ada IDE monolitik. Eclipse dan Netbeans. MonoDevelop. KDevelop4 dan QT Creator. Mereka semua memiliki pengguna yang bersumpah demi mereka.

Apakah Ubuntu lebih baik untuk Anda ? Siapa tahu. Ini adalah sistem yang sangat mampu dan sangat dapat dikustomisasi. Jika Anda memberinya kesempatan dan mengubah alur kerja Anda agar dapat membantu Anda, Anda harus dapat membuatnya tetap.


18
"Gratis" adalah masalah biaya dan kerumitan. Saya menggunakan Mac, tetapi alat seperti Vagrant membuatnya mudah untuk mengatur VM Linux bersih untuk proyek apa pun dan membuangnya ketika proyek selesai. "Apa yang aku inginkan?" adalah satu-satunya pertimbangan, bukan "apakah saya memiliki kunci lisensi untuk OS ini dan bagaimana saya bisa dikenali ...?"
Nathan Long

14
1 Untuk tetap objektif ketika begitu banyak orang merasa mudah untuk memiliki sikap "Windoze sucks at everything".
Phil

2
Satu hal yang harus dicatat, visual studio lebih bebas daripada biasanya, ia telah mendukung file MAKE untuk sementara waktu sekarang dan plugin memungkinkan Anda menulis dan men-debug aplikasi cygwin sepenuhnya di dalam Visual Studio.
Scott Chamberlain

6
even PowerShell scripts lack the power of Bash- Saya berpendapat bahwa Anda tidak mengenal PS dengan baik; ini sangat kuat dan saya belum pernah bertemu apa pun yang dapat Anda lakukan di Bash yang tidak dapat Anda lakukan di PS
Mark Henderson

4
@ MarkHenderson Ya hampir pasti karena tidak cukup menggunakannya. Itu diperkenalkan tepat ketika saya meninggalkan Windows dan .NET di belakang saya. Saya pikir Bash (dan dengan "Bash" maksud saya benar-benar GNU) membawa saya karena Anda menggunakannya di mana - mana dan untuk semuanya . PS membutuhkan begitu banyak Googling setiap kali karena semuanya hanya selalu super-spesialisasi. Sejujurnya sulit dikatakan setelah sekian lama bersama Bash.
Oli

37

Saya ingin menambahkan satu alasan penting lagi; Ubuntu sangat bagus untuk bereksperimen dengan perpustakaan, bahasa, IDE, dan kompiler baru. Semuanya satu pergi.

Jadi, Anda pernah mendengar tentang bahasa mewah yang disebut Haskell :

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

Oh, Anda pernah mendengar editor mewah untuk Haskell:

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

Sama dengan pustaka C / C ++ , Anda hanya memilikinya apt-get installdan binari serta headernya menuju ke folder yang benar, dan Anda bisa #includememasukkannya ke file sumber Anda tanpa perlu memeriksa di mana mereka ditempatkan!

Intinya, ini bukan tentang seberapa cepat Anda dapat mengatur lingkungan kerja Anda sehari-hari. Ini juga tentang seberapa cepat Anda dapat mengatur lingkungan eksperimental. Saya percaya itulah yang mempercepat pengalaman belajar di Linux.


36
apt-get, dan mentalitas bahwa semuanya harus dapat diinstal dengan cara itu, mungkin adalah hal terbaik tentang Linux. Baik OSX maupun Windows tidak membandingkan di sini.
Nathan Long

11
Ya, tetapi Anda harus mengambil installer masing-masing aplikasi secara manual: fakta bahwa mereka menggunakan installer yang sama di dalam tidak banyak membeli Anda (itu menghemat usaha mereka ). Itu tidak sama dengan manajer paket bawaan.
berguna

2
@ NathanLong Saya baru saja melakukan hal yang sama persis menggunakan Macports: sudo port install ghc. Baru dikompilasi dari sumber. The MacPorts Project currently distributes 17699 ports. Satu perbedaan adalah selalu dikompilasi.
alecail

2
@karadeniz: Dan itu belum lagi yum, pacman, emerge, petget, pkgadd...
Aesin

2
Saya suka MacPorts (dan mengelola beberapa paket di sana dan di Homebrew), tetapi tidak bisa dibandingkan dengan Debian. Proyek-proyek yang lebih kecil ini tidak memiliki kekuatan orang untuk mempertahankan repositori besar dengan standar yang sama. Hal yang sama berlaku untuk cygwin dan coapp di sisi Windows. Perbedaan utama adalah budaya, saya pikir, manajer paket linux adalah bagian dari sistem dan digunakan untuk semuanya oleh semua orang, mereka bukan penguna yang sedikit diabaikan.
jcupitt

20

Berikut ini pendapat dari pengembang platform Microsoft. Jika Anda tidak menargetkan ekosistem .NET, saya berpendapat bahwa opsi terbaik Anda adalah Ubuntu. Anda akan memiliki waktu yang jauh lebih mudah untuk memperoleh, mengkonfigurasi, dan menggunakan alat untuk hampir semua platform / bahasa lain jika Anda menggunakan Ubuntu dan bukan Windows.

Nilai dari toolchain Microsoft adalah sangat terintegrasi. Dari IDE ke Kontrol Sumber, Manajemen Proyek, Build, Deployment, Database, Cloud Infrastructure, ad nauseum . Microsoft membuatnya SANGAT mudah jika Anda menggunakan platform mereka.

Seperti yang telah disebutkan beberapa orang, menyimpang dari Microsoft Way bisa jadi menyebalkan. Menggunakan .NET untuk kode Anda dan Oracle untuk database Anda ... Ya itu akan menyusahkan.

Ingin membuat aplikasi web .NET dan menyebarkannya ke Amazon Web Services ... tidak terlalu mudah.

Tetapi jika Anda tetap berada di dalam Microsoft Ecosystem ... bayi itu akan bernyanyi seperti burung mengejek untuk Anda. Di tangan pengembang perangkat lunak yang kompeten, Platform Microsoft seperti PED untuk atlet berbakat. Itu tidak akan memungkinkan seorang programmer amatir untuk membuat Facebook berikutnya. Tapi itu akan memberikan keunggulan bagi pengembang berbakat yang memahami bagaimana bagian-bagian tersebut cocok bersama.

Argumen untuk biaya gratis (seperti bir) untuk memulai dengan Ubuntu adalah keluar dari pintu, ada sejumlah program yang ditawarkan Microsoft yang memungkinkan Anda memulai dengan alat mereka secara gratis. Termasuk Bizspark yang memberi perusahaan startup Anda 3 tahun lisensi (termasuk lisensi penggunaan produksi dari alat mereka). Dan percikan Mimpi yang memberikannya kepada siswa secara gratis.

Oleh karena itu, jika Anda ingin menjelajahi dan mempelajari bahasa dan platform baru, Anda akan menemukan alat yang lebih baik untuk memulai di Ubuntu dan jika Anda mencari pekerjaan di luar ekosistem Microsoft, Anda harus terbiasa dengan Ubuntu.


7
Ya, saya setuju. Setelah menulis kode C / Unix tingkat rendah untuk sementara waktu di lingkungan Linux, saya memutuskan untuk beristirahat dan melakukan beberapa pengembangan grafis C #, menyalakan VS baru, dan, yah, itu membebaskan, untuk sedikitnya. Ini tidak sefleksibel itu pasti membuat segalanya lebih mudah jika Anda tidak keberatan menjual jiwa Anda ke Mikronesia .. eh, maksud saya, memperluas wawasan Anda!
Thomas

3
Ya +1 untuk penangkal selamat datang dari sniping anti-MS setengah-informasi.
Alan B

15

Saya menggunakan kedua alat, IDE dan editor teks dengan C ommand- L ine I nterface (di bawah ini disebut sebagai CLI ), untuk menulis program.

Apa yang Linux tawarkan adalah CLI yang bermanfaat mulai dari instalasi default. Jika Anda tidak membutuhkannya dan Anda hanya menggunakan IDE, maka tidak ada banyak perbedaan lagi (IMHO).

IDE

  • IDE sangat baik ketika mengintegrasikan banyak fitur dan menyajikannya dalam GUI grafis.
  • Kelemahannya, ini bisa membuat seseorang kewalahan. Sekarang Anda akan memiliki dua hal untuk dipelajari: IDE dan bahasa pemrograman.

Editor teks dan alat CLI

  • Editor teks dan alat CLI tidak butuh waktu lama untuk mempelajarinya.
  • Jika sesuatu tidak berfungsi, mudah untuk melihat alat mana yang tidak berfungsi seperti yang diharapkan.
  • Lebih mudah mencari masalah dengan Google karena semuanya berbasis teks.
  • Pemrograman dengan editor teks dan alat CLI lebih cepat dan lebih responsif, terutama membandingkannya dengan perangkat keras yang lebih lama.
  • Anda dapat bekerja dengannya bahkan di layar resolusi rendah.
  • Ini memungkinkan Anda untuk memprogram dan men-debug dengan sumber daya minimal di server jauh.

Saya sering melakukan prototipe dengan alat berbasis teks. Kemudian, ketika ada lebih banyak file untuk dikelola, saya menghargai alat refactoring yang ditawarkan IDE kepada saya.


8
Untuk referensi di masa mendatang, CLI adalah singkatan untuk antarmuka baris perintah. CLI biasanya merujuk ke antarmuka seperti aptitude yang mirip dengan GUI, tetapi dalam teks. Vim akan menjadi editor CLI, tetapi greptidak akan menjadi CLI, itu tidak memiliki antarmuka (itu hanya akan menjadi alat baris perintah)
kiri

Disambiguasinya bagus. Berasal dari latar belakang pemrograman Windows, CLI adalah kependekan dari Common Language Infrastructure .
jltrem

Saya menggunakan GUI untuk mengembangkan GUI, dan editor teks untuk mengembangkan CLI atau program / konten berbasis teks. Saya tidak akan pernah mencoba untuk menulis aplikasi bisnis GUI-berat di Vim, Visual C # membuat prototyping hal-hal seperti itu mudah. Demikian pula, saya tidak akan pernah melakukan pengembangan web (PHP / HTML / CSS / JS dll) dalam IDE di Windows, karena melakukannya di Vim di server web saya jauh lebih efisien dan nyaman.
Dan

@ minerz029 CLI adalah program bergaya grep (satu perintah [baris] sekaligus). Anda sedang memikirkan "aplikasi konsol", yang bergaya apt / vim.
Izkata

4
@ minerz029 Antarmuka untuk grepadalah argumen, stdin, dan stdout - kata tersebut tidak menyiratkan sesuatu yang grafis atau pseudo-grafis. Jenis antarmuka lain termasuk API web, protokol serial, dan sebagainya.
Izkata

12

Saya akan melemparkan jawaban saya ke atas ring (meskipun saya percaya semua ini juga bagus).

Jawaban paling mendasar yang bisa Anda dapatkan adalah bahwa itu semua tentang filsafat.


Di dunia Microsoft, ini agak religius - Anda memiliki dewa di Mt. Redmond yang harus mengajukan petisi jika Anda ingin sesuatu diterapkan. Kadang-kadang mereka akan mendengarkan, di lain waktu pengorbanan dan permohonan Anda akan jatuh di telinga tuli. Mungkin mereka sedang berburu. Microsoft mengendalikan seluruh ekosistem - mereka memiliki OS, mereka memiliki IDE, dan mereka menyatukan mereka dengan cara yang mungkin tidak pantas untuk dibicarakan di jaringan SE. Bahkan di dalam potongan IDE sangat erat - itu bisa disebut terintegrasitapi saya pikir ditambah lebih akurat. Jika Anda ingin mengubah keadaan sedikit, Gates melarang Anda ingin mengubah sesuatu dengan cara yang tidak diizinkan oleh perancang Windows atau Visual Studio. Dan kemudian melempar teknologi seperti IE, dan IIS, server Microsoft, dan MS SQL Server, dan Office ... dan semuanya adalah keluarga besar yang menyenangkan. Tetapi jika Anda ingin meninggalkan bagian keluarga? bergidik !


Di sisi lain, Anda memiliki Linux, yang mewarisi dari filosofi Unix bahwa setiap bagian harus bertanggung jawab atas lingkup tanggung jawabnya yang kecil. Itu harus melakukan satu hal, dan melakukannya dengan baik. Dan lebih disukai, komunikasi harus terjadi melalui string teks. Seperti orang lain telah menunjukkan, sed, awk, grep, dll adalah contoh sempurna dari ini. Mereka melakukan satu hal yang dirancang untuk mereka lakukan, dan mereka melakukannya dengan sangat baik. Jika Anda perlu melakukan dua hal, maka Anda menggabungkan kedua alat tersebut. Yang sangat mudah dilakukan.

Karena sedtidak mengharapkan apa pun selain input yang masuk adalah teks, itu berarti bahwa apa pun yang dapat menghasilkan teks tidak harus menemukan kembali roda. Mereka hanya bisa menggunakan sed. Dan karena sedmenghasilkan teks, apa pun yang dapat membaca teks dapat menggunakan output dari sed. Teks sangat universal (ada beberapa pengecualian untuk ini), dan sangat mudah untuk menggabungkan hal-hal ini bersama-sama.

Tidak hanya mudah untuk menggabungkannya, tetapi juga sangat mudah untuk memisahkannya - jika saya memutuskan bahwa saya tidak perlu lagi mengedit aliran, tetapi saya ingin memfilter hasilnya, daripada meneruskan teks saya ke sed, saya bisa meneruskan itu grepsebagai gantinya.

Sekarang, ini adalah filosofi dasar di balik pengembangan dalam lingkungan Linux - jadi bahkan jika Anda naik dari sana, banyak alat yang menyediakan jenis antarmuka yang serupa. Mereka memungkinkan Anda untuk menguraikannya menjadi beberapa bagian, atau berinteraksi dengan mereka melalui baris perintah atau port atau HTTP.

Dan bahkan jika itu tidak terjadi, Anda juga memiliki perangkat lunak sumber terbuka. Sebagian besar (jika tidak semua) perangkat lunak pada platform Linux adalah open source. Jadi, jika Anda tidak suka bagaimana ini ditulis, Anda benar-benar, benar-benar dapat mengubah perangkat lunak sendiri. Ini sangat memberdayakan. Tidak dapat memecah IDE itu seperti yang Anda inginkan? Entah membuat perubahan dan mengirimkannya kembali ke hulu, atau memotong proyek. Tidak yakin mengapa sesuatu berperilaku seperti itu? Gunakan sumbernya, Luke! Perlu dapat mengotomatisasi sesuatu melalui baris perintah? Meretas proyek dan memasukkan perubahan Anda. Menemukan bug, atau masalah keamanan? Hei coba tebak - Anda dapat memperbaikinya sendiri, Anda tidak perlu menunggu SP3.432vb89234.startdate1eQ keluar.

Anda dapat menggabungkan alat yang Anda inginkan dan yang Anda butuhkan. Dan jika ada sesuatu yang menghalangi Anda, Anda 100% bisa mengubahnya. Bahkan jika Anda tidak memiliki kemampuan, Anda tentu dapat membayar seseorang untuk mengembangkan perubahan itu - atau bahkan menyarankannya kepada orang lain yang memiliki pengetahuan.

Alasan ini lebih baik untuk pemrograman adalah karena ketika Anda menemukan gesekan , Anda dapat menghilangkannya dari alur kerja Anda. Karena pengembangan itu sulit, ada banyak hal yang harus Anda pikirkan untuk menjadi programmer yang sukses, dan semakin banyak Anda harus berpikir tentang semakin sulit untuk memikirkan hal-hal lain .

Menghilangkan gesekan adalah kuncinya.

Jadi jika Microsoft ecostystem agama adalah di mana Anda merasa di rumah, dan Anda menikmati alat begitu banyak sehingga tidak menyediakan Anda dengan banyak / gesekan setiap ... baik, itu mungkin baik-baik saja kemudian.

Tetapi jika Anda tidak cocok dengan Microsoft Mold (tm), paten tertunda, maka Anda akan mengalami gesekan. Perkembangan akan menyusahkan. Setiap kali Anda berharap bisa melakukan sesuatu, tetapi tidak bisa, itu akan menghabiskan sumber daya kognitif yang berharga. Dan jika itu masalahnya, maka lingkungan pengembangan Linux mungkin untuk Anda.


1
Saya sangat menikmati esai yang Anda tautkan, terima kasih.
Gareth Davidson

3
Puji Balmer, dan semoga semua Bit Paritasnya diatur dengan benar. ACK. ACK. ACK.
Warren P

9

Saya ingin memberikan pemikiran yang lebih umum kepada pertanyaan:

"Mengapa Linux lingkungan yang lebih baik untuk pemrograman?"

Saya pikir alasan paling penting mengapa mengembangkan Linux adalah karena Anda memiliki wawasan penuh tentang sebagian besar perangkat lunak internal. Anda dapat belajar bagaimana segala sesuatunya bekerja jika Anda tertarik. Itu memungkinkan Anda untuk belajar dan mengadaptasi praktik yang baik atau buruk dengan melihatnya dalam tindakan. Ini memungkinkan lebih banyak keragaman ide Anda.


2
Poin bagus. Open source adalah manfaat alami bagi semua pengembang yang memiliki rasa ingin tahu. Di windows, kura-kura itu turun sepenuhnya!
Warren P

Itu poin yang bagus. Anda memiliki wawasan tentang internal perangkat lunak di sini
Anwar

Banyak pengembang Windows akan bekerja seumur hidup mereka pada platform Windows, memprogram melawan API mereka tidak akan pernah melihat sisi lain dari itu. Jenis penjara untuk pikiran, bukan begitu?
Warren P

@ WarrenP Jika API didokumentasikan dengan benar, maka Anda tidak akan belajar lebih banyak dengan melihat kode sumber. (Meskipun saya akui banyak API tidak sepenuhnya didokumentasikan, di kedua dunia.)
svick

8

Mengapa Linux lebih baik untuk pemrograman

IDE

Selain Visual Studio dan Xcode, yang melayani tujuan spesifik mereka, IDE paling populer adalah multiplatform. Mungkin terlihat seperti ada trilyun IDE untuk banyak bahasa, tetapi pada akhirnya sebagian besar didasarkan pada Eclipse , IntelliJ IDEA atau NetBeans . Kesamaan yang mereka miliki adalah bahwa mereka semua berbasis Java. Java bekerja lebih efisien di Linux, daripada di OS lain di perangkat keras yang sama. Bahkan, Java sebanyak 20% lebih cepat di Linux, daripada di OS X pada perangkat keras yang sama. Banyak dari IDE ini siap dipasang dengan satu klik di Ubuntu Software Center.

Penyusun

GCC telah menjadi standar industri. Di luar keraguan, platform utamanya adalah Linux, di mana ia didukung terbaik. Dan gratis dan bebas royalti.

Alat tambahan

Linux menyediakan alat unik, tidak tersedia pada platform lain, seperti misalnya Valgrind (alat untuk debugging memori, deteksi kebocoran memori, dan pembuatan profil). Linux juga dilengkapi dengan alat debugging seperti strace dan ltrace , yang dapat digunakan untuk debug bahkan kode produksi (yaitu tidak dikompilasi dengan simbol debugging). Alat Setara untuk Windows tidak ada atau sangat mahal dan tidak menyediakan fungsionalitas yang sama.

Kemudahan menginstal OSS

Ubuntu memiliki manajer paket yang sangat baik. Dalam kebanyakan kasus, menginstal perangkat lunak adalah adil apt-get install package-name(Anda dapat melakukannya dengan GUI juga, baik Ubuntu Software Center atau Synaptic). Setelah diinstal, mereka secara otomatis diperbarui oleh sistem dengan rilis perbaikan bug. Sistem paket juga secara otomatis melacak dependensi, sehingga Anda tidak perlu khawatir tentang paket lain yang diperlukan; mereka akan diinstal secara otomatis.

Di sisi lain, di Windows Anda harus mengunduh dan menginstal paket secara manual, dan jika mereka memerlukan beberapa paket lain, Anda juga harus melakukannya secara manual. Tidak ada pembaruan sistem secara luas, setiap paket perangkat lunak mengimplementasikan pembaruan sendiri yang menyebalkan atau tidak memperbarui sama sekali.

Mesin produksi sangat mungkin adalah Linux

Jika Anda melakukan segala jenis pemrograman untuk back-end, untuk web, untuk cloud, dll. Sangat mungkin bahwa mesin target Anda adalah Linux. Ada banyak kejutan yang kurang menyenangkan ketika Anda mengembangkan pada jenis OS yang sama dengan mesin target Anda.

Tentu saja, Anda mungkin sedang mengembangkan aplikasi desktop untuk Windows, tetapi saat ini ini adalah semacam pasar kerja khusus bagi para programmer.


Aplikasi desktop untuk Windows adalah pasar khusus? Apa
Alan B

2
@AlanB: Tidak, pemrogram desktop aplikasi Windows adalah niche. Diperkirakan 90-95% programmer melakukan pengembangan in-house, dan ini kebanyakan bukan aplikasi desktop. Juga, pikirkan saja, kapan terakhir kali Anda membeli (seperti membayar uang aktual untuk) aplikasi Windows, itu bukan game (atau produk Adobe dalam hal ini)?
vartec

Sejauh yang saya bisa lihat, hampir semua yang ada di ruang bisnis masih berbasis desktop dan berbayar, meskipun perusahaan cloud-centric terus mengklaim sebaliknya.
Alan B

4
@AlanB: sekali lagi, saya tidak berbicara tentang pasar pengguna akhir. Saya berbicara tentang pasar kerja untuk programmer . Misalnya salah satu aplikasi yang sedang Anda bicarakan adalah MS Office. Namun seluruh tim Office di MS hanya sekitar 2.500 programmer, dan banyak dari mereka bahkan tidak bekerja pada versi desktop.
vartec

7

Mengapa menulis program dalam file teks atau melalui terminal pilihan yang lebih baik (seperti yang saya baca) daripada menggunakan IDE seperti Visual Studio pada Windows?

Bukan, saya bisa berpendapat bahwa itu justru sebaliknya. Namun secara umum, orang cenderung lebih suka alat yang lebih baik. Jenis alat yang Anda gunakan mungkin bermanfaat bagi kemudahan menulis program. Jadi misalnya, saya bisa menulis program Java dengan baik saja dengan vim tapi itu benar-benar kontra produktif dibandingkan dengan IDE yang lengkap seperti Eclipse atau IntelliJ. Jon Skeet memberikan jawaban yang bagus untuk pertanyaan Mengapa menggunakan IDE .

Kembali ke pertanyaan awal Anda, satu-satunya hal yang lebih baik di Linux adalah pemrograman C. Segala sesuatu yang dapat Anda lakukan di Linux juga dapat Anda lakukan di Windows dan sebaliknya (pemrograman bijaksana). Pemrograman C lebih baik di Linux karena alasan historis, ia menawarkan seperangkat alat yang hebat (yang bisa Anda dapatkan di Windows BTW tetapi jauh lebih mudah untuk menyiapkan Linux untuk itu). Demikian juga, jika Anda menulis C # dan suka. NET maka Windows adalah pilihan yang lebih baik untuk alasan yang jelas. Segala sesuatu yang lain benar-benar subyektif dan Anda akan mendengar pro dan kontra dari kedua belah pihak.


5
Tolong, cobalah untuk mengatur <tempatkan bahasa pemrograman lain kecuali lingkungan MS di sini> di Windows, mari kita lihat sejauh apa ia berjalan.
Braiam

1
@Braiam yang saya lakukan, Java: P.
Daniel

6
Linux lebih baik dalam menjalankan apa pun yang mirip Unix. Toolchain GCC (yang mencakup kompiler C dan C ++ dan hal-hal lainnya) memiliki warisan Unix / Posix yang panjang. Tetapi, jika Anda berpikir bahwa semua pemrograman mirip Unix adalah pemrograman C, Anda sayangnya kurang tertarik pada keragaman yang kaya dari warisan dan alat Unix / Posix / Linux.
Warren P

2
Java adalah sedikit kasus khusus karena Anda dengan cepat menghasilkan folder bersarang dan banyak file. Dan begitu Anda mengganti nama kelas atau paket, Anda perlu menyinkronkan nama file atau folder masing-masing. Asyik, asyik :)
MadMike

1
Saya tidak tahu apakah Linux dan CLI tentu lebih baik untuk pemrograman C (VS hebat di C ++ tetapi tidak memiliki dukungan C99, Posix mungkin sedikit lebih bersih daripada Win32). Tetapi apt-getsangat bagus dalam hal pengembangan C. Anda dapat dengan cepat mendapatkan alat, perpustakaan dan simbol-simbol debug untuk misalnya sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbgDan mencoba hal-hal keluar dengan mudah.
Alex Jasmin

6

Alat apa (editor teks atau IDE) yang Anda gunakan untuk pemrograman adalah soal pilihan. Secara umum Anda dapat mengatakan: Pemula dan proyek yang sangat kecil cenderung menggunakan editor teks yang lebih baik, seperti teks yang luhur atau versi gedit yang dimodifikasi. Hanya karena Anda belajar lebih banyak saat menggunakan editor teks biasa. IDE dapat mengacaukan proses belajar Anda dengan mengotomatisasi hal-hal (seperti Visual Studio;)).

Ketika datang ke profesional, mengacaukan banyak alat dan bahasa, IDE berguna, karena mereka dapat melakukan lebih banyak untuk Anda, jika Anda membiarkannya. Ada banyak IDE untuk dipilih, tergantung pada bahasa yang Anda ingin programkan. Ada yang lebih baik dan juga yang kurang nyaman.

Pengalaman pribadi saya adalah, bahwa OS Ubuntu jauh lebih cepat dan lebih mudah diatur untuk pengembangan daripada Windows. Saya kira, ini karena sebagian besar alat dan program yang saya gunakan dibangun di Linux dan karena saya tidak perlu mencari tautan unduhan di internet untuk program favorit saya. Ini hanya berjarak 'apt-get install program1 program2 program3'. Sebagai perbandingan: Saya perlu 3 hari kerja untuk menginstal dan mengkonfigurasi instalasi Windows baru dengan semua yang saya butuhkan untuk pemrograman (perusahaan, bukan pribadi, itu akan lebih cepat), tetapi itu hanya satu hari untuk tugas yang sama di Ubuntu.

Pengalaman saya adalah, bahwa programmer, yang beralih ke Linux untuk pemrograman memiliki (sebagian besar waktu) pemahaman yang lebih dalam tentang konteks teknis dan bagaimana dasar-dasar bekerja. Pengguna Mac dan Windows cenderung tidak tahu mengapa sesuatu bekerja seperti ini atau mengapa tidak. Saya tidak yakin apakah Anda benar-benar dapat belajar sesuatu dari bekerja dengan Linux atau jika hanya itu yang akan belajar beralih ke Linux.

Semoga "blafasel" saya sedikit membantu ...


1

Saya berpendapat bahwa distribusi Linux adalah IDE.

Sebagai permulaan, Unix dirancang sejak awal untuk menjadi lingkungan pengembangan. Itu ditulis oleh programmer untuk programmer. Sebagian besar Unix, dan Linux, masih disertakan dengan alat pengembangan dalam konfigurasi default mereka. Dan bagian yang hilang hanya berjarak apt-get(atau setara). Windows, di sisi lain, adalah lingkungan pengembangan yang mengerikan sampai Anda menginstal IDE, yang tidak murah, atau proses yang sepele.

Suatu IDE lebih terintegrasi, dalam arti bahwa IDE lebih erat daripada menggunakan GCC, Git dan Vi (misalnya). Kopling ketat memungkinkan hal-hal seperti `intellisense 'bekerja lebih baik. Tetapi di sisi lain, kopling longgar memiliki banyak keunggulan (mis. Fleksibilitas, dapat dipertukarkan, kurangnya penguncian).

Dan kemajuan dalam desain kompiler (kompiler dengan ujung depan yang mudah dipisahkan seperti LLVM) pada akhirnya mungkin berarti dukungan yang lebih baik untuk fitur-fitur seperti penyorotan kesalahan sintaks bahkan dalam lingkungan yang digabungkan secara longgar.


Jadi, pada dasarnya Anda mengatakan bahwa Linux adalah Lingkungan Pengembangan Terpadu yang sebenarnya tidak terintegrasi banyak? :-)
svick

1

Mengenai masalah filosofi: Ubuntu / Linux mengizinkan programmer komputer akses langsung ke internal dan perangkat keras, sedangkan Windows adalah semacam penjaga gerbang. Ini adalah masalah filosofis penting dalam hal pemrograman. Jadi, secara filosofis, fitur ini menjadi keuntungan akan tergantung pada apakah pengguna memiliki pengetahuan yang cukup atau secara teknis sadar akan pentingnya fitur tersebut.

Mengenai masalah pemrograman: Seluruh arsitektur sistem Ubuntu / Linux didasarkan pada tradisi Unix dari program kecil dan sederhana yang melakukan satu hal, dan kemudian menyatukannya untuk melakukan hal-hal yang lebih kompleks. Untuk seorang programmer, arsitektur ini sangat kuat, dan, dalam pandangan saya, adalah alasan mengapa Unix akan menang dalam jangka panjang terhadap setiap arsitektur perangkat lunak lainnya di setiap platform. Salah satu dari beberapa tempat di mana Unix saat ini tidak dominan adalah desktop, tetapi itu akan berubah seiring waktu. Distribusi seperti Ubuntu membantu untuk melihat evolusi ini.

Saya tidak membantah, bahwa ada beberapa lingkungan pemrograman yang sangat baik pada Windows. Untuk pemrograman dalam lingkungan perusahaan, ini sering mendominasi.


0

Kecepatan adalah jawaban yang tepat.

Saya menemukan bahwa dengan IDE grafis seperti Visual Studio atau QtCreator saya menggunakan mouse terlalu banyak ketika saya harus menggunakan jalan pintas. Setiap kali Anda mengubah konteks, Anda harus menjeda otak Anda, fokus pada target Anda dan menunggu tindakan. Sedangkan menekan F5 jauh lebih cepat.

Sekarang jika Anda menggunakan vim, Emacs atau sesuatu yang tidak memiliki tombol yang terlihat bagus Anda akan fokus pada penekanan tombol, Anda memiliki satu metode dan menjadi lebih cepat karena rutinitasnya.

Kesalahan disajikan dengan cara yang lebih verbose dengan antarmuka baris perintah, yang saya sukai, dan juga memberikan umpan balik selama kompilasi. Satu hal yang saya benci tentang Visual Studio adalah default adalah ikon kecil yang menunjukkan melakukan kompilasi, maka Anda mendapatkan daftar kesalahan.

Dengan tampilan sempit Anda akan tetap pada lebar 80 kolom yang membantu keterbacaan, saya telah melihat kode yang merentang hingga 200 kolom. Dengan pemasangan kode ke 80 kolom, Anda dapat membuka 4/5 jendela sekaligus.

Dengan editor CLI Anda dapat kode jarak jauh, tidak perlu untuk sesi RDP lambat (dibandingkan dengan teks) ke Visual Studio Anda. Anda dapat membuat kode melalui tautan GSM.

Pengembangan bentuk visual agak menyebalkan. Satu keuntungan yang Anda dapat gunakan pada GUI IDE adalah bahwa Anda dapat menggambar layar Anda dan lebih cepat. Namun dalam pengalaman saya itu bagus untuk prototipe tetapi sering kali Anda mendapatkan hasil yang lebih baik dengan melakukannya secara manual dalam kode. VS2012 Code Analyzer pagi ini baru saja memperingatkan saya tentang 200+ masalah dengan kode yang dihasilkan secara otomatis oleh Visual Studio?!?!?


0

Saya pikir pertanyaan Anda yang sebenarnya mungkin, "Apakah ada alternatif Visual Studio yang akan berjalan di Ubuntu, karena tidak akan ada?"

MonoDevelop.

Ini bisa diterapkan, tetapi Anda akan membencinya jika Anda terbiasa dengan VS dan semua fitur.

TIDAK ada keuntungan menggunakan editor teks. Ingat hal menyenangkan yang disebut Intellisense? Tidak terjadi (tetapi MonoDevelop memiliki sesuatu seperti itu). Semoga ini membantu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.