Ubuntu có lợi thế gì so với Windows như một môi trường để lập trình?


59

Tại sao việc viết chương trình trong tệp văn bản hoặc qua thiết bị đầu cuối là một tùy chọn tốt hơn (khi tôi đọc) hơn là sử dụng IDE (s) như Visual Studio trên Windows? Các tính năng mà IDE cung cấp có tồn tại ở đó không (ví dụ: hiển thị lỗi biên dịch) hoặc đó là một quy trình thủ công?


16
Một số người đã làm lập trình trong một thời gian dài và đã đạt được hiệu quả cao trong việc thực hiện những gì họ làm từ một dấu nhắc lệnh điều khiển văn bản. Họ cũng có thể tìm thấy các biên tập viên vimthích theo ý thích của họ. Đây là một lĩnh vực rất chủ quan! Nhiều người sử dụng IDE trên Linux, vì vậy bạn đang kết hợp nhiều thứ ở đây.
Warren P

3
Tôi tin rằng IDE không phải là điểm chính của câu hỏi. Có rất nhiều IDE cho hệ điều hành linux. Ví dụ: tất cả các IDE JetBrains (IntelliJ / PyCharm, v.v.) đều hoạt động trên linux. Eclipse hoạt động trên linux. QtCreator hoạt động trên linux.
Bakuriu

12
Câu hỏi này trên trang web này sẽ bị sai lệch xác nhận .
zzzzBov

5
Trong một nỗ lực để giữ sạch câu hỏi về thảo luận meta, tôi đã mở một chủ đề Meta riêng để giải quyết cụ thể .
Oli

4
Vui lòng viết lại câu hỏi này để có ý nghĩa hơn, đặc biệt là tiêu đề. Ubuntu không buộc bạn phải tránh các IDE và gắn bó với các trình soạn thảo văn bản để phát triển phần mềm nhiều hơn Windows.
Rebier Post

Câu trả lời:


87

Loại giả thuyết này có thể làm tốt hơn cho Lập trình viên. Vì nó có thể là một mặt khá đẹp ở đây. Điều đó nói rằng, tôi là một nhà phát triển .NET trong một vài năm và phụ thuộc vào Visual Studio. Nó giúp ích rất nhiều cho bạn và vâng, tôi đặc biệt thích trình gỡ lỗi tích hợp ... Tuy nhiên, tôi nghĩ có một vài lý do khiến mọi người chọn Linux:

  • Ubuntu là miễn phí. Windows và VS có thể cực kỳ đắt đỏ.

  • Ubuntu là miễn phí . Windows và VS cung cấp cho bạn rất ít quyền kiểm soát đối với cách bạn sử dụng chúng.

  • Ubuntu là một môi trường lập trình ngay lập tức. Các công cụ như Bash, grep, sed, awk. Windows trong lịch sử là một nỗi đau lớn ở phía dưới để kịch bản từ. Các tệp hàng loạt là khủng khiếp và thậm chí với PowerShell, trải nghiệm dòng lệnh trong Windows trở nên không đáng kể khi so sánh với Bash và các công cụ GNU. Bạn có thể chuyển một số điều đó sang Windows nhưng đó không phải là trải nghiệm tương tự.

  • Thiết lập phức tạp dễ dàng tự động hóa và sao chép thông qua apt-get, các công cụ như Puppet , Chef , Juju , Fabric và kịch bản đơn giản.

  • Một số thứ không cần IDE phức tạp. Tôi là một nhà phát triển Python ngày nay và tôi hoàn toàn hài lòng với các công cụ và trình gỡ lỗi tích hợp sẵn của nó. Tôi sử dụng trình soạn thảo văn bản, dòng lệnh và kết cấu ... Và tôi kiểm soát nhiều hơn so với .NET. Tôi có thể xây dựng, kiểm tra, cam kết và triển khai các ứng dụng web của mình bằng một lệnh Fabric duy nhất.

    Điều đó không có nghĩa là không có IDE nguyên khối. Nhật thực và Netbeans. Phát triển đơn nhân. KDevelop4 và người tạo QT. Họ đều có người dùng của họ thề với họ.

Ubuntu có tốt hơn cho bạn không? Ai biết. Đó là một hệ thống rất có khả năng và rất tùy biến. Nếu bạn cho nó một cơ hội và thay đổi quy trình làm việc của bạn để cho phép nó giúp bạn, bạn sẽ có thể làm cho nó gắn bó.


18
"Miễn phí" là cả về chi phí và rắc rối. Tôi sử dụng máy Mac, nhưng một công cụ như Vagrant giúp dễ dàng thiết lập máy ảo Linux sạch cho mọi dự án và loại bỏ nó khi dự án hoàn thành. "Tôi muốn gì?" là sự cân nhắc duy nhất, không phải "tôi có khóa cấp phép cho HĐH này không và làm cách nào để nó được công nhận ...?"
Nathan Long

14
+1 Để duy trì mục tiêu khi rất nhiều người thấy dễ dàng có thái độ "Windoze hút mọi thứ".
Phil

2
Một điều cần lưu ý, phòng thu trực quan miễn phí hơn trước đây, nó đã hỗ trợ các tệp MAKE trong một thời gian và các plugin cho phép bạn viết và gỡ lỗi các ứng dụng cygwin hoàn toàn trong Visual Studio.
Scott Chamberlain

6
even PowerShell scripts lack the power of Bash- Tôi sẽ tranh luận rằng bạn không biết PS rất rõ; nó vô cùng mạnh mẽ và tôi chưa gặp bất cứ điều gì bạn có thể làm ở Bash mà bạn không thể làm trong PS
Mark Henderson

4
@MarkHenderson Vâng, gần như chắc chắn không sử dụng đủ. Nó được giới thiệu giống như tôi đang bỏ lại Windows và .NET. Tôi nghĩ Bash (và bởi "Bash" Tôi thực sự có nghĩa là GNU) đã mang theo tôi vì bạn sử dụng nó ở mọi nơi và cho mọi thứ . PS yêu cầu rất nhiều Googling mỗi lần vì mọi thứ luôn luôn là siêu chuyên biệt. Thật sự rất khó để nói sau quá lâu với Bash.
Oli

37

Tôi muốn thêm một lý do quan trọng hơn mặc dù; Ubuntu rất tốt để thử nghiệm với các thư viện, ngôn ngữ, IDE và trình biên dịch mới. Tất cả mọi thứ là một apt-get Away.

Vì vậy, bạn đã nghe nói về một ngôn ngữ ưa thích gọi là Haskell :

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

Ồ, bạn đã nghe một trình soạn thảo ưa thích cho Haskell:

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

Tương tự với các thư viện C / C ++ , bạn chỉ cần apt-get installchúng và các nhị phân và các tiêu đề đi đến đúng thư mục và bạn có thể chỉ cần #includechúng trong các tệp nguồn của mình mà không cần phải kiểm tra xem chúng được đặt ở đâu!

Về bản chất, đó không phải là về việc bạn có thể thiết lập môi trường làm việc hàng ngày nhanh như thế nào. Đó cũng là về cách bạn có thể thiết lập một môi trường thử nghiệm cực kỳ nhanh. Tôi tin rằng đó là những gì thúc đẩy trải nghiệm học tập trong Linux.


36
apt-getvà tâm lý rằng mọi thứ phải được cài đặt theo cách đó, có lẽ là điều tốt nhất về Linux. Cả OSX và Windows đều không so sánh ở đây.
Nathan Long

11
Có, nhưng bạn phải tìm nạp thủ công từng trình cài đặt: thực tế họ sử dụng cùng một trình cài đặt bên trong không mua cho bạn nhiều (điều này giúp họ tiết kiệm một số nỗ lực). Điều đó không giống như một trình quản lý gói tích hợp.
Vô dụng

2
@NathanLong Tôi mới làm điều tương tự chính xác bằng Macports: sudo port install ghc. Mới tổng hợp từ các nguồn. The MacPorts Project currently distributes 17699 ports. Một sự khác biệt là nó luôn luôn biên dịch.
alecail

2
@karadeniz: Và đó là chưa kể đến yum, pacman, emerge, petget, pkgadd...
Aesin

2
Tôi thích MacPorts (và duy trì một vài gói ở đó và trên Homebrew), nhưng nó thực sự không thể so sánh với Debian. Các dự án nhỏ hơn này không có khả năng cá nhân để duy trì một kho lưu trữ lớn theo cùng tiêu chuẩn. Điều tương tự cũng xảy ra với Cygwin và coapp bên phía Windows. Sự khác biệt chính là về văn hóa, tôi nghĩ, các trình quản lý gói linux là một phần của hệ thống và được mọi người sử dụng cho mọi thứ, chúng không phải là một công cụ bổ trợ bị bỏ quên một chút.
jcupitt

20

Đây là ý kiến ​​từ một nhà phát triển nền tảng chủ yếu của Microsoft. Nếu bạn không nhắm mục tiêu hệ sinh thái .NET, tôi sẽ cho rằng tùy chọn tốt nhất của bạn là Ubuntu. Bạn sẽ có thời gian dễ dàng hơn để có được, định cấu hình và sử dụng các công cụ cho hầu hết mọi nền tảng / ngôn ngữ khác nếu bạn sử dụng Ubuntu thay vì Windows.

Giá trị của toolchain của Microsoft là nó được tích hợp CAO. Từ IDE đến Kiểm soát nguồn, Quản lý dự án, Xây dựng, Triển khai, Cơ sở dữ liệu, Cơ sở hạ tầng đám mây, quảng cáo . Microsoft làm cho nó RẤT dễ dàng nếu bạn đang chán nản với nền tảng của họ.

Như một số người đã đề cập, đi chệch khỏi Microsoft Way có thể là một nỗi đau. Sử dụng .NET cho mã của bạn và Oracle cho cơ sở dữ liệu của bạn ... đó sẽ là một nỗi đau.

Muốn tạo một ứng dụng web .NET và triển khai nó lên Amazon Web Services ... không đơn giản lắm.

Nhưng nếu bạn ở trong Hệ sinh thái Microsoft ... em bé đó sẽ hát như một con chim nhạo báng cho bạn. Trong tay của một nhà phát triển phần mềm có thẩm quyền, Nền tảng Microsoft giống như PED cho một vận động viên tài năng. Nó sẽ không cho phép một lập trình viên nghiệp dư tạo ra Facebook tiếp theo. Nhưng nó sẽ mang lại lợi thế cho một nhà phát triển tài năng, người hiểu cách các mảnh ghép khớp với nhau.

Đối số về chi phí (như bia) miễn phí khi bắt đầu với Ubuntu là không có, có một số chương trình Microsoft cung cấp cho phép bạn bắt đầu với các công cụ của họ miễn phí. Bao gồm Bizspark cung cấp cho công ty khởi nghiệp của bạn 3 năm giấy phép (bao gồm giấy phép sử dụng sản xuất các công cụ của họ). Và Dream spark cung cấp miễn phí cho sinh viên.

Điều đó đang được nói, nếu bạn muốn khám phá và tìm hiểu các ngôn ngữ và nền tảng mới, bạn sẽ tìm thấy các công cụ tốt hơn để bắt đầu trên Ubuntu và nếu bạn đang tìm kiếm công việc bên ngoài hệ sinh thái Microsoft, bạn sẽ cần phải làm quen với Ubuntu.


7
Đúng, tôi đồng ý. Sau khi viết mã C / Unix cấp thấp trong một thời gian trên môi trường Linux, tôi quyết định nghỉ ngơi và thực hiện một số phát triển đồ họa C #, kích hoạt VS mới, và, tốt nhất là giải phóng nó. Nó không linh hoạt nhưng chắc chắn sẽ khiến mọi việc dễ dàng hơn nếu bạn không ngại bán linh hồn cho Micr .. ừ, ý tôi là, mở rộng tầm nhìn của bạn!
Thomas

3
Yeah +1 cho một thuốc giải độc được chào đón để bắn tỉa chống MS nửa thông tin.
Alan B

15

Tôi sử dụng cả hai công cụ, IDE và trình soạn thảo văn bản với C ommand- L ine I nterface (dưới đây gọi là CLI ), để viết chương trình.

Những gì Linux cung cấp là một CLI hữu ích bắt đầu từ cài đặt mặc định. Nếu bạn không cần điều đó và dù sao bạn cũng đang sử dụng IDE, thì không còn nhiều sự khác biệt nữa (IMHO).

IDE

  • IDE rất tốt khi tích hợp nhiều tính năng và trình bày chúng trong GUI đồ họa.
  • Nhược điểm là, nó có thể áp đảo một người mới làm điều này. Bây giờ bạn sẽ có hai điều cần học: IDE và ngôn ngữ lập trình.

Trình chỉnh sửa văn bản và công cụ CLI

  • Trình chỉnh sửa văn bản và công cụ CLI không mất nhiều thời gian để tìm hiểu.
  • Nếu một cái gì đó không hoạt động, thật dễ dàng để xem công cụ nào không hoạt động như mong đợi.
  • Việc tìm kiếm các vấn đề với Google cũng dễ dàng hơn vì mọi thứ đều dựa trên văn bản.
  • Lập trình với các trình soạn thảo văn bản và các công cụ CLI nhanh hơn và nhạy hơn, đặc biệt là so sánh chúng trên phần cứng cũ.
  • Bạn có thể làm việc với chúng ngay cả trên màn hình độ phân giải thấp.
  • Nó cho phép bạn lập trình và gỡ lỗi với các tài nguyên tối thiểu trên một máy chủ từ xa.

Tôi thường làm mẫu của tôi với các công cụ dựa trên văn bản. Sau này, khi có nhiều tệp để quản lý, tôi đánh giá cao các công cụ tái cấu trúc mà IDE đang cung cấp cho tôi.


8
Để tham khảo trong tương lai, CLI là tên viết tắt cho giao diện dòng lệnh. CLI thường đề cập đến một giao diện như aptitude tương tự như GUI, nhưng trong văn bản. Vim sẽ là một trình soạn thảo CLI, nhưng grepsẽ không phải là CLI, nó không có giao diện (nó sẽ chỉ là một công cụ dòng lệnh)
kiri

Sự định hướng là tốt. Đến từ nền tảng lập trình Windows CLI có thể đại diện cho Cơ sở hạ tầng ngôn ngữ chung .
jltrem

Tôi sử dụng GUI để phát triển GUI và trình soạn thảo văn bản để phát triển CLI hoặc các chương trình / nội dung dựa trên văn bản. Tôi sẽ không bao giờ thử viết một ứng dụng kinh doanh nặng GUI trong Vim, Visual C # làm cho việc tạo mẫu như vậy trở nên dễ dàng. Tương tự, tôi sẽ không bao giờ thực hiện phát triển web (PHP / HTML / CSS / JS, v.v.) trong IDE trên Windows, bởi vì thực hiện nó trong Vim trên máy chủ web của tôi vô cùng hiệu quả và tiện lợi hơn.
Dan

@ minerz029 CLI là các chương trình kiểu grep (một lệnh [dòng] tại một thời điểm). Bạn đang nghĩ về "ứng dụng console", đó là aptitude / vim-style.
Izkata

4
@ minerz029 Giao diện cho greplà các đối số, stdin và stdout - từ này không ám chỉ bất kỳ đồ họa hoặc giả đồ họa nào. Các loại giao diện khác bao gồm API web, giao thức nối tiếp, v.v.
Izkata

12

Tôi sẽ ném câu trả lời của mình vào vòng (mặc dù tôi tin rằng tất cả những điều này cũng tốt).

Câu trả lời cơ bản nhất bạn có thể nhận được là tất cả về triết học.


Trong thế giới của Microsoft, đó là một chút tôn giáo - Bạn có các vị thần trên Mt. Redmond, người phải được thỉnh cầu nếu bạn muốn thực hiện bất cứ điều gì. Đôi khi họ sẽ lắng nghe, những lần khác, sự hy sinh và lời cầu xin của bạn sẽ rơi vào tai người điếc. Có lẽ họ đã ra ngoài săn bắn. Microsoft kiểm soát toàn bộ hệ sinh thái - họ sở hữu HĐH, họ sở hữu IDE và họ kết hợp chúng theo những cách có thể không phù hợp để nói về mạng SE. Ngay cả trong các phần IDE được liên kết chặt chẽ - nó có thể được gọi là tích hợpnhưng tôi nghĩ rằng kết hợp là chính xác hơn. Nếu bạn muốn thay đổi mọi thứ một chút, Gates cấm rằng bạn muốn thay đổi một cái gì đó theo cách mà các nhà thiết kế của Windows hoặc Visual Studio không cho phép rõ ràng. Và sau đó sử dụng các công nghệ như IE và IIS, máy chủ Microsoft và MS SQL Server và Office ... và mọi thứ đều là một gia đình hạnh phúc lớn. Nhưng nếu bạn muốn để lại một phần của gia đình phía sau? rùng mình !


Mặt khác, bạn có Linux, kế thừa từ triết lý Unix rằng mỗi phần phải chịu trách nhiệm cho phạm vi trách nhiệm nhỏ của riêng mình. Nó nên làm một việc, và làm tốt. Và tốt nhất, giao tiếp nên xảy ra bằng cách của chuỗi văn bản. Như những người khác đã chỉ ra, sed, awk, grepvv là những ví dụ hoàn hảo về điều này. Họ làm một việc mà họ được thiết kế để làm, và họ làm điều đó rất tốt. Nếu bạn cần làm hai việc, thì bạn kết hợp hai công cụ. Đó là rất dễ dàng để làm.

Bởi vì sedmong đợi không có gì ngoài đầu vào đến sẽ là văn bản, điều đó có nghĩa là bất cứ điều gì có thể tạo ra văn bản không phải phát minh lại bánh xe. Họ chỉ có thể sử dụng sed. Và bởi vì sedsản xuất văn bản, bất cứ điều gì có thể đọc văn bản có thể sử dụng đầu ra từ sed. Văn bản rất phổ biến (có một số trường hợp ngoại lệ cho điều này) và rất dễ dàng để kết hợp các loại điều này với nhau.

Việc kết hợp chúng không chỉ dễ dàng mà còn rất dễ dàng để phân tách chúng - nếu tôi quyết định rằng tôi không còn cần phải chỉnh sửa luồng, nhưng tôi muốn lọc kết quả, thay vì chuyển văn bản của mình sang sed, tôi có thể chuyển nó để grepthay thế.

Bây giờ, đây là triết lý cơ bản đằng sau sự phát triển trong môi trường Linux - vì vậy ngay cả khi bạn đi lên từ đó, nhiều công cụ cung cấp các loại giao diện tương tự. Chúng cho phép bạn phân tách chúng thành các phần hoặc giao diện với chúng thông qua dòng lệnh hoặc cổng hoặc HTTP.

Và ngay cả khi đó không phải là trường hợp, bạn cũng có phần mềm nguồn mở. Hầu hết (nếu không phải tất cả) phần mềm trên nền tảng Linux là nguồn mở. Vì vậy, nếu bạn không thích cách viết, bạn hoàn toàn có thể tự thay đổi phần mềm. Điều này là vô cùng trao quyền. Không thể phá vỡ IDE đó theo cách bạn muốn? Hoặc thực hiện các thay đổi và gửi chúng ngược dòng, hoặc rẽ nhánh dự án. Không chắc chắn tại sao một cái gì đó hành xử theo cách nó làm? Sử dụng nguồn, Luke! Cần để có thể tự động hóa một cái gì đó thông qua dòng lệnh? Hack vào dự án và theo dõi các thay đổi của bạn. Gặp lỗi hay vấn đề bảo mật? Hãy đoán xem - bạn có thể tự khắc phục điều đó, bạn không cần phải đợi SP3.432vb89234.startdate1eQ xuất hiện.

Bạn có thể kết hợp các công cụ mà bạn muốn và bạn cần. Và nếu có điều gì đó cản trở bạn, bạn có thể thay đổi 100%. Ngay cả khi bạn không có khả năng, bạn chắc chắn có thể trả tiền cho ai đó để phát triển sự thay đổi đó - hoặc thậm chí đề xuất nó cho người khác có bí quyết.

Lý do điều này tốt hơn cho lập trình là vì khi bạn gặp phải ma sát , bạn có thể loại bỏ nó khỏi quy trình làm việc của mình. Bởi vì phát triển là khó khăn, có rất nhiều điều bạn phải nghĩ để trở thành một lập trình viên thành công, và bạn càng phải suy nghĩ về những điều khó khăn hơn khi nghĩ về những điều khác .

Loại bỏ ma sát là chìa khóa.

Vì vậy, nếu tôn giáo hệ sinh thái của Microsoft là nơi bạn cảm thấy như ở nhà và bạn thích các công cụ đến mức nó không cung cấp cho bạn nhiều / bất kỳ ma sát nào ... tốt, có lẽ nó vẫn ổn.

Nhưng nếu bạn không phù hợp với Microsoft Mold (tm), đang chờ cấp bằng sáng chế, thì bạn sẽ gặp phải ma sát. Phát triển sẽ là một nỗi đau. Mỗi lần bạn ước mình có thể làm gì đó, nhưng không thể, điều đó sẽ rút cạn tài nguyên nhận thức quý giá. Và nếu đó là trường hợp, thì môi trường phát triển Linux có lẽ là dành cho bạn.


1
Tôi thực sự rất thích các bài luận bạn liên kết, cảm ơn bạn.
Gareth Davidson

3
Khen ngợi Balmer, và có thể tất cả các Parity Bits của anh ta được đặt chính xác. ACK. ACK. ACK.
Warren P

9

Tôi muốn cung cấp những suy nghĩ chung hơn của tôi cho câu hỏi:

"Tại sao Linux là một môi trường tốt hơn để lập trình?"

Tôi nghĩ lý do quan trọng nhất tại sao để phát triển trên Linux là bởi vì bạn có cái nhìn sâu sắc về hầu hết các phần mềm bên trong. Bạn có thể tìm hiểu làm thế nào mọi thứ thực sự hoạt động nếu bạn quan tâm. Điều đó cho phép bạn học và điều chỉnh các thực hành tốt hoặc xấu bằng cách nhìn thấy chúng trong hành động. Điều này cho phép đa dạng hơn cho ý tưởng của bạn.


2
Điểm tốt. Nguồn mở là một lợi ích tự nhiên cho tất cả các nhà phát triển có bất kỳ loại tò mò nào. Trên các cửa sổ, nó là rùa xuống!
Warren P

Đó là một điểm hay. Bạn có cái nhìn sâu sắc về phần bên trong của một phần mềm tại đây
Anwar

Rất nhiều nhà phát triển Windows sẽ làm việc cả đời với nền tảng Windows, lập trình dựa trên API mà họ sẽ không bao giờ nhìn thấy mặt khác của nó. Bạn nghĩ sao?
Warren P

@WarrenP Nếu một API được ghi lại đúng cách, thì bạn sẽ không tìm hiểu thêm về nó bằng cách xem mã nguồn. (Mặc dù tôi thừa nhận nhiều API không được ghi lại đầy đủ, ở cả hai thế giới.)
svick

8

Tại sao Linux tốt hơn cho lập trình

IDE

Bên cạnh Visual Studio và Xcode, phục vụ các mục đích cụ thể của họ, hầu hết các IDE phổ biến là đa nền tảng. Có vẻ như có rất nhiều IDE cho hàng tá ngôn ngữ, nhưng cuối cùng, hầu hết chúng đều dựa trên Eclipse , IntelliJ IDEA hoặc NetBeans . Điểm chung của họ là tất cả đều dựa trên Java. Java hoạt động hiệu quả hơn trên Linux, hơn bất kỳ HĐH nào khác trên cùng phần cứng. Trên thực tế, Java nhanh hơn 20% trên Linux, so với OS X trên cùng một phần cứng. Nhiều IDE trong số này đã sẵn sàng để cài đặt chỉ với một cú nhấp chuột trong Trung tâm phần mềm Ubuntu.

Trình biên dịch

GCC đã trở thành tiêu chuẩn công nghiệp. Không còn nghi ngờ gì nữa, nền tảng chính của nó là Linux, nơi nó được hỗ trợ tốt nhất. Và nó miễn phí và miễn phí bản quyền.

Công cụ bổ sung

Linux cung cấp các công cụ độc đáo, không có sẵn trên các nền tảng khác, ví dụ như Valgrind (một công cụ để gỡ lỗi bộ nhớ, phát hiện rò rỉ bộ nhớ và định hình). Linux cũng đi kèm với các công cụ gỡ lỗi như straceltrace , có thể được sử dụng để gỡ lỗi ngay cả mã sản xuất (nghĩa là không được biên dịch với các ký hiệu gỡ lỗi). Các công cụ tương đương cho Windows là không tồn tại hoặc rất đắt tiền và không cung cấp cùng chức năng.

Dễ cài đặt OSS

Ubuntu có một trình quản lý gói tuyệt vời. Trong hầu hết các trường hợp, việc cài đặt phần mềm chỉ là apt-get install package-name(bạn cũng có thể làm điều đó với GUI, hoặc Trung tâm phần mềm Ubuntu hoặc Synaptic). Sau khi cài đặt, chúng sẽ tự động được hệ thống cập nhật với các bản phát hành lỗi. Hệ thống gói cũng tự động theo dõi các phụ thuộc, vì vậy bạn không phải lo lắng về các gói khác cần thiết; chúng sẽ được cài đặt tự động.

Mặt khác, trong Windows, bạn phải tải xuống và cài đặt các gói theo cách thủ công và nếu chúng yêu cầu một số gói khác, bạn cũng phải thực hiện thủ công. Không có cập nhật toàn hệ thống, mỗi gói phần mềm đều thực hiện trình cập nhật gây phiền nhiễu của riêng mình hoặc hoàn toàn không cập nhật.

Máy sản xuất rất có khả năng là Linux

Nếu bạn thực hiện bất kỳ loại lập trình nào cho back-end, cho web, cho đám mây, v.v ... thì rất có khả năng các máy mục tiêu của bạn là Linux. Có rất nhiều điều ngạc nhiên khó chịu khi bạn đang phát triển trên cùng loại hệ điều hành với máy mục tiêu của mình.

Tất nhiên, bạn có thể đang phát triển một ứng dụng máy tính để bàn cho Windows, nhưng ngày nay đây là một thị trường việc làm thích hợp cho các lập trình viên.


Ứng dụng máy tính để bàn cho Windows là một thị trường thích hợp? Cái gì
Alan B

2
@AlanB: Không, lập trình viên của máy tính để bàn Các ứng dụng Windows là thích hợp. Ước tính 90-95% lập trình viên đang thực hiện phát triển nội bộ và đây hầu hết không phải là ứng dụng dành cho máy tính để bàn. Ngoài ra, hãy nghĩ về nó, lần cuối bạn mua (như tiền thực tế được trả cho) một ứng dụng Windows, đó không phải là một trò chơi (cũng không phải sản phẩm Adobe cho vấn đề đó)?
vartec

Theo như tôi có thể thấy hầu hết mọi thứ trong không gian kinh doanh vẫn kiên quyết dựa trên máy tính để bàn và được trả tiền, mặc dù các công ty trung tâm đám mây liên tục tuyên bố khác.
Alan B

4
@AlanB: một lần nữa, tôi không nói về thị trường của người dùng cuối. Tôi đang nói về thị trường việc làm cho các lập trình viên . Ví dụ, một trong những ứng dụng bạn đang nói đến là MS Office. Tuy nhiên, toàn bộ nhóm Office tại MS chỉ có khoảng 2.500 lập trình viên và nhiều người trong số họ thậm chí không làm việc trên phiên bản máy tính để bàn.
vartec

7

Tại sao việc viết chương trình trong tệp văn bản hoặc qua thiết bị đầu cuối là một tùy chọn tốt hơn (khi tôi đọc) hơn là sử dụng IDE (s) như Visual Studio trên Windows?

Không, tôi có thể lập luận rằng nó hoàn toàn ngược lại. Nói chung, mọi người có xu hướng thích các công cụ mà họ giỏi hơn. Loại công cụ bạn sử dụng có thể có lợi cho việc viết chương trình. Vì vậy, ví dụ, tôi có thể viết các chương trình Java tốt với vim nhưng nó thực sự phản tác dụng so với một IDE hoàn chỉnh như Eclipse hoặc IntelliJ. Jon Skeet đã đưa ra một câu trả lời tuyệt vời cho câu hỏi Tại sao nên sử dụng IDE .

Quay lại câu hỏi ban đầu của bạn, điều duy nhất Linux tốt hơn là lập trình C. Mọi thứ khác bạn có thể làm trên Linux, bạn cũng có thể làm trên Windows và ngược lại (lập trình khôn ngoan). Lập trình C tốt hơn trên Linux vì lý do lịch sử, nó cung cấp một bộ công cụ tuyệt vời (mà bạn có thể có trên Windows BTW nhưng việc thiết lập Linux cho nó dễ dàng hơn nhiều). Tương tự như vậy, nếu bạn đang viết C # và thích .NET thì Windows là lựa chọn tốt hơn vì những lý do rõ ràng. Mọi thứ khác là hoàn toàn chủ quan và bạn sẽ nghe thấy ưu và nhược điểm của cả hai bên.


5
Vui lòng thử thiết lập môi trường <đặt một ngôn ngữ lập trình khác ngoại trừ môi trường MS ở đây> trong Windows, để xem nó đi được bao xa.
Braiam

1
@Braiam Tôi đã làm, Java: P.
Daniel

6
Linux tốt hơn trong việc chạy mọi thứ giống Unix. Chuỗi công cụ GCC (bao gồm trình biên dịch C và C ++ và các thứ khác) có một di sản Unix / Posix dài. Nhưng, nếu bạn nghĩ rằng tất cả các chương trình giống như Unix đều là lập trình C, thì thật đáng buồn là bạn không bị ảnh hưởng bởi sự đa dạng phong phú của các công cụ và di sản Unix / Posix / Linux.
Warren P

2
Java là một trường hợp đặc biệt khi bạn nhanh chóng tạo các thư mục lồng nhau sâu và nhiều tệp. Và ngay khi bạn đổi tên các lớp hoặc gói, bạn cần đồng bộ hóa tên tệp hoặc các thư mục tương ứng. Vui vui vui vui :)
MadMike

1
Tôi không biết liệu Linux và CLI có nhất thiết phải tốt hơn cho lập trình C hay không (VS rất tốt ở C ++ nhưng thiếu hỗ trợ C99, Posix có thể sạch hơn Win32 một chút). Nhưng apt-getthật tuyệt vời khi nói đến phát triển C. Bạn có thể nhanh chóng lấy các công cụ, thư viện và các biểu tượng gỡ lỗi sudo apt-get install libcurl4-openssl-dev, ví dụ sudo apt-get install valgrind, sudo apt-get install libz-dbgvà thử mọi thứ một cách dễ dàng.
Alex Jasmin

6

Những công cụ nào (trình soạn thảo văn bản hoặc IDE) bạn sử dụng để lập trình là vấn đề được lựa chọn. Nói chung, bạn có thể nói: Người mới bắt đầu và các dự án rất nhỏ có xu hướng sử dụng trình soạn thảo văn bản tốt hơn, như văn bản cao siêu hoặc phiên bản sửa đổi của gedit. Chỉ vì bạn tìm hiểu thêm khi sử dụng trình soạn thảo văn bản đơn giản. IDE có thể làm hỏng quá trình học tập của bạn bằng cách tự động hóa mọi thứ (như Visual Studio hiện;)).

Khi nói đến các chuyên gia, làm rối tung rất nhiều công cụ và ngôn ngữ, IDE có ích, bởi vì chúng có thể làm được nhiều hơn cho bạn, nếu bạn cho phép chúng. Có nhiều IDE để lựa chọn, tùy thuộc vào ngôn ngữ bạn muốn lập trình. Có những cái tốt hơn và cũng không tiện lợi hơn.

Kinh nghiệm cá nhân của tôi là, hệ điều hành Ubuntu nhanh hơn và dễ thiết lập để phát triển hơn Windows. Tôi đoán, điều này là do hầu hết các công cụ và chương trình tôi sử dụng đều được xây dựng trên Linux và vì tôi không phải tìm kiếm trên internet các liên kết tải xuống các chương trình yêu thích của mình. Nó chỉ là một 'apt-get install chương trình1 chương trình3'. So sánh: Tôi cần 3 ngày làm việc để cài đặt và định cấu hình cài đặt Windows mới với mọi thứ tôi cần để lập trình (công ty, không riêng tư, sẽ nhanh hơn), nhưng đó chỉ là một ngày cho cùng một tác vụ trong Ubuntu.

Kinh nghiệm của tôi là, các lập trình viên, những người chuyển sang Linux để lập trình (hầu hết thời gian) hiểu sâu hơn về bối cảnh kỹ thuật và cách thức hoạt động cơ bản. Người dùng Mac và Windows có xu hướng không biết tại sao một cái gì đó hoạt động theo cách này hoặc tại sao nó không hoạt động. Tôi không chắc liệu bạn có thực sự có thể học được điều gì đó khi làm việc với Linux hay không nếu chỉ những người đó sẽ học chuyển sang Linux.

Hy vọng "blafasel" của tôi sẽ giúp một chút ...


1

Tôi sẽ lập luận rằng một bản phân phối Linux một IDE.

Để bắt đầu, Unix được thiết kế ngay từ đầu để trở thành một môi trường phát triển. Nó được viết bởi các lập trình viên cho các lập trình viên. Hầu hết các Unix và Linux, vẫn cung cấp các công cụ phát triển trong cấu hình mặc định của chúng. Và các phần còn thiếu chỉ là một apt-get(hoặc tương đương) đi. Windows, mặt khác, là một môi trường phát triển khủng khiếp cho đến khi bạn cài đặt một IDE, nó không rẻ, hoặc một quá trình tầm thường.

Một IDE được tích hợp nhiều hơn, theo nghĩa là các IDE được liên kết chặt chẽ hơn so với sử dụng GCC, Git và Vi (ví dụ). Khớp nối chặt chẽ cho phép những thứ như 'intellisense' hoạt động tốt hơn. Nhưng mặt khác, khớp nối lỏng lẻo có nhiều ưu điểm (ví dụ như tính linh hoạt, khả năng thay thế lẫn nhau, thiếu khóa).

Và những tiến bộ trong thiết kế trình biên dịch (trình biên dịch có giao diện người dùng dễ phân tách như LLVM) cuối cùng có thể có nghĩa là hỗ trợ tốt hơn cho các tính năng như làm nổi bật lỗi cú pháp ngay cả trong môi trường được ghép lỏng lẻo.


Vì vậy, về cơ bản, bạn đang nói rằng Linux là một Môi trường phát triển tích hợp không thực sự được tích hợp nhiều? :-)
Svick

1

Về vấn đề triết học: Ubuntu / Linux cho phép lập trình viên máy tính truy cập trực tiếp vào phần bên trong và phần cứng, trong khi Windows là một loại công cụ gác cổng. Đây là một vấn đề triết học quan trọng khi nói đến lập trình. Vì vậy, về mặt triết học, tính năng này là một lợi thế sẽ phụ thuộc vào việc người dùng có đủ hiểu biết hay nhận thức về mặt kỹ thuật về tầm quan trọng của nó hay không.

Về vấn đề lập trình: Toàn bộ kiến ​​trúc hệ thống của Ubuntu / Linux được thiết lập dựa trên truyền thống Unix của các chương trình nhỏ, đơn giản làm một việc, sau đó kết hợp chúng lại với nhau để làm những việc phức tạp hơn. Đối với một lập trình viên, kiến ​​trúc này cực kỳ mạnh mẽ và theo quan điểm của tôi, đó là lý do tại sao Unix sẽ thắng thế trong thời gian dài so với mọi kiến ​​trúc phần mềm khác trên mọi nền tảng. Một trong số ít nơi mà Unix hiện không chiếm ưu thế là máy tính để bàn, nhưng điều đó sẽ thay đổi theo thời gian. Các bản phân phối như Ubuntu đang giúp thấy sự phát triển này thông qua.

Tôi không tranh cãi, tuy nhiên, có một số môi trường lập trình rất tốt trên Windows. Đối với lập trình trong môi trường doanh nghiệp, những thứ này thường chiếm ưu thế.


0

Tốc độ là câu trả lời sắp xếp.

Tôi thấy rằng với một IDE đồ họa như Visual Studio hoặc QtCreator mà tôi sử dụng chuột quá nhiều khi tôi nên sử dụng các phím tắt. Mỗi khi bạn chuyển đổi bối cảnh bạn phải tạm dừng bộ não của mình, tập trung vào mục tiêu của bạn và chờ đợi hành động. Trong khi nhấn F5 thì nhanh hơn vô cùng.

Bây giờ nếu bạn đang sử dụng vim, Emacs hoặc thứ gì khác không có nút nhìn đẹp mắt, bạn sẽ tập trung vào các phím bấm, bạn có một phương pháp và trở nên nhanh hơn vì thói quen của nó.

Các lỗi được trình bày theo cách dài dòng hơn với giao diện dòng lệnh, tôi thích hơn và nó cũng cung cấp phản hồi trong quá trình biên dịch. Một điều tôi ghét về Visual Studio là mặc định là một biểu tượng nhỏ cho biết nó đang biên dịch, sau đó bạn nhận được một danh sách lỗi.

Với chế độ xem hẹp, bạn sẽ giữ được độ rộng 80 cột giúp dễ đọc, tôi đã thấy mã trải rộng đến chiều rộng 200 cột. Với mã phù hợp với 80 cột, bạn có thể mở 4/5 cửa sổ cùng một lúc.

Với trình chỉnh sửa CLI, bạn có thể mã hóa từ xa, không cần phiên RDP chậm (so với văn bản) cho Visual Studio của bạn. Bạn có thể mã qua một liên kết GSM.

Hình thức phát triển hình thức của hút. Một lợi thế bạn có thể đặt trên GUI IDE là bạn có thể vẽ màn hình của mình và nhanh hơn. Tuy nhiên theo kinh nghiệm của tôi, nó tốt cho một nguyên mẫu nhưng thường thì bạn sẽ có kết quả tốt hơn khi thực hiện thủ công bằng mã. Trình phân tích mã VS2012 sáng nay vừa cảnh báo tôi về hơn 200 vấn đề với mã được Visual Studio tạo tự động?!?!?


0

Tôi nghĩ rằng câu hỏi thực sự của bạn có thể là "Có bất kỳ lựa chọn thay thế nào của Visual Studio sẽ chạy trên Ubuntu không, vì nó sẽ không?"

Phát triển đơn nhân.

Nó hoạt động được, nhưng bạn sẽ ghét nó nếu bạn đã quen với VS và tất cả các tính năng.

KHÔNG có lợi thế để sử dụng một trình soạn thảo văn bản. Hãy nhớ rằng điều tốt đẹp được gọi là Intellisense? Không xảy ra (nhưng MonoDevelop có một cái gì đó giống như vậy). Hi vọng điêu nay co ich.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.