เหตุใดการเขียนโปรแกรมในไฟล์ข้อความหรือผ่านเทอร์มินัลจึงเป็นตัวเลือกที่ดีกว่า (เมื่อฉันอ่าน) กว่าการใช้ IDE (s) เช่น Visual Studio บน Windows คุณลักษณะที่ IDE มีให้นั้นมีอยู่ (เช่นแสดงข้อผิดพลาดในการคอมไพล์) หรือเป็นกระบวนการแบบแมนนวลหรือไม่?
เหตุใดการเขียนโปรแกรมในไฟล์ข้อความหรือผ่านเทอร์มินัลจึงเป็นตัวเลือกที่ดีกว่า (เมื่อฉันอ่าน) กว่าการใช้ IDE (s) เช่น Visual Studio บน Windows คุณลักษณะที่ IDE มีให้นั้นมีอยู่ (เช่นแสดงข้อผิดพลาดในการคอมไพล์) หรือเป็นกระบวนการแบบแมนนวลหรือไม่?
คำตอบ:
สมมุติฐานแบบนี้น่าจะทำได้ดีกว่าในโปรแกรมเมอร์เพราะมันน่าจะเป็นด้านเดียวที่นี่ ที่กล่าวว่าฉันเป็นนักพัฒนา. NET ไม่กี่ปีและมาขึ้นอยู่กับ Visual Studio มันมีประโยชน์กับคุณมากและใช่ฉันชอบดีบักเกอร์ในตัวโดยเฉพาะ ... อย่างไรก็ตามฉันคิดว่ามีเหตุผลบางอย่างที่ผู้คนเลือก Linux:
Ubuntu ฟรี Windows และ VS อาจมีราคาแพงมาก
อูบุนตูเป็นฟรี Windows และ VS ให้การควบคุมวิธีการใช้งานน้อยมาก
อูบุนตูเป็นสภาพแวดล้อมในการเขียนโปรแกรมโดยตรง grep
เครื่องมือเช่นทุบตี sed
, awk
, Windows เป็นความเจ็บปวดในประวัติศาสตร์จากล่างสู่สคริปต์ ไฟล์แบตช์นั้นแย่มากและแม้แต่กับ PowerShell ประสบการณ์บรรทัดคำสั่งใน Windows จะเปลี่ยนไปอย่างไม่มีนัยสำคัญเมื่อเทียบกับ Bash และเครื่องมือ GNU คุณสามารถย้ายพอร์ตบางส่วนไปยัง Windows แต่ไม่ใช่ประสบการณ์เดียวกัน
การตั้งค่าที่ซับซ้อนนั้นง่ายต่อการทำให้เป็นอัตโนมัติและทำซ้ำapt-get
เครื่องมือต่างๆเช่นPuppet , Chef , Juju , Fabricและสคริปต์อย่างง่าย
บางสิ่งไม่จำเป็นต้องมี IDE ที่ซับซ้อน ฉันเป็นนักพัฒนางูหลามวันนี้และฉันมีความสุขอย่างสมบูรณ์แบบด้วยเครื่องมือในตัวและดีบักเกอร์ในตัว ฉันใช้เท็กซ์เอดิเตอร์บรรทัดคำสั่งและแฟบริค ... และฉันควบคุมได้ดีกว่าฉันอยู่ภายใต้. NET ฉันสามารถสร้างทดสอบรับรองและปรับใช้ webapps ของฉันด้วยคำสั่ง Fabric
ไม่ได้หมายความว่าจะไม่มี IDEs แบบเสาหิน Eclipse และ Netbeans MonoDevelop KDevelop4 และ QT Creator พวกเขามีผู้ใช้ที่สาบานโดยพวกเขา
Ubuntu ดีกว่าสำหรับคุณหรือไม่ ใครจะรู้. มันเป็นระบบที่มีความสามารถและปรับแต่งได้มาก หากคุณให้โอกาสกับมันและปรับเปลี่ยนเวิร์กโฟลว์ของคุณเพื่อให้มันช่วยคุณได้
even PowerShell scripts lack the power of Bash
- ฉันยืนยันว่าคุณไม่รู้จัก PS ดีนัก มันทรงพลังอย่างมากและฉันไม่ได้พบอะไรที่คุณสามารถทำได้ใน Bash ที่คุณไม่สามารถทำได้ใน PS
ฉันต้องการเพิ่มเหตุผลสำคัญอีกข้อหนึ่ง Ubuntu เหมาะสำหรับการทดลองกับไลบรารีภาษา IDE และคอมไพเลอร์ใหม่ ทุกอย่างเป็นไปอย่างง่ายดาย
คุณเคยได้ยินเกี่ยวกับภาษาแฟนซีชื่อHaskell :
sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!
โอ้คุณเคยได้ยินบรรณาธิการแฟนซีสำหรับ Haskell:
sudo apt-get install <fancy-editor-for-haskell>
เช่นเดียวกับไลบรารีC / C ++คุณเพียงแค่apt-get install
พวกมันและไบนารีและส่วนหัวไปยังโฟลเดอร์ที่ถูกต้องและคุณสามารถทำได้#include
ในไฟล์ต้นฉบับโดยไม่จำเป็นต้องตรวจสอบว่าวางไว้ที่ไหน!
โดยพื้นฐานแล้วมันไม่ได้เกี่ยวกับความรวดเร็วในการตั้งค่าสภาพแวดล้อมการทำงานประจำวันของคุณ นอกจากนี้ยังเกี่ยวกับความรวดเร็วในการตั้งค่าสภาพแวดล้อมการทดลอง ฉันเชื่อว่าเป็นสิ่งที่ช่วยเร่งประสบการณ์การเรียนรู้ภายใต้ Linux
apt-get
และความคิดที่ว่าทุกอย่างจะต้องติดตั้งได้ด้วยวิธีนั้นอาจเป็นสิ่งที่ดีที่สุดเกี่ยวกับ Linux ไม่เปรียบเทียบ OSX หรือ Windows ที่นี่
The MacPorts Project currently distributes 17699 ports
. สิ่งหนึ่งที่แตกต่างคือมันมักจะรวบรวม
yum
, pacman
, emerge
, petget
, pkgadd
...
นี่คือความเห็นจากผู้พัฒนาแพลตฟอร์ม Microsoft เป็นหลัก หากคุณไม่ได้กำหนดเป้าหมายระบบนิเวศ. NET ฉันจะยืนยันว่าตัวเลือกที่ดีที่สุดของคุณคือ Ubuntu คุณจะมีเวลามากขึ้นในการรับตั้งค่าและใช้เครื่องมือสำหรับแพลตฟอร์ม / ภาษาอื่น ๆ เกือบทุกครั้งหากคุณใช้ Ubuntu แทน Windows
คุณค่าของ toolchain ของ Microsoft คือมันรวมกันอย่างมาก จาก IDE เพื่อมาควบคุมการบริหารจัดการโครงการสร้างการใช้งานฐานข้อมูลโครงสร้างพื้นฐานเมฆ, nauseum โฆษณา Microsoft ทำให้การใช้งานง่ายขึ้นมากหากคุณกำลังเบื่อกับแพลตฟอร์มของพวกเขา
ดังที่บางคนกล่าวถึงการเบี่ยงเบนจากวิธีของ Microsoft อาจเป็นเรื่องเจ็บปวด ใช้. NET สำหรับรหัสของคุณและ Oracle สำหรับฐานข้อมูลของคุณ ... นี่เป็นเรื่องที่เจ็บปวด
ต้องการสร้างแอปพลิเคชันเว็บ. NET และปรับใช้กับ Amazon Web Services ... ไม่ส่งตรงไปตรงมามาก
แต่ถ้าคุณอยู่ในระบบนิเวศของ Microsoft ... ลูกน้อยจะร้องเพลงเหมือนนกที่เย้ยหยันสำหรับคุณ ในมือของนักพัฒนาซอฟต์แวร์ที่มีความสามารถแพลตฟอร์ม Microsoft เป็นเหมือน PED สำหรับนักกีฬาที่มีความสามารถ มันจะไม่ทำให้โปรแกรมเมอร์สมัครเล่นสร้าง Facebook ตัวต่อไป แต่มันจะมอบความได้เปรียบให้กับนักพัฒนาที่มีความสามารถซึ่งเข้าใจว่าชิ้นส่วนเข้าด้วยกันอย่างไร
ข้อโต้แย้งสำหรับค่าใช้จ่ายในการเริ่มต้นใช้งาน Ubuntu อย่างฟรี (เช่นในเบียร์) มีหลายโปรแกรมที่ Microsoft เสนอให้คุณเริ่มต้นใช้งานเครื่องมือของพวกเขาได้ฟรี รวมถึง Bizspark ที่ให้ บริษัท เริ่มต้นของคุณ 3 ปีของใบอนุญาต (รวมถึงใบอนุญาตใช้งานจริงของเครื่องมือของพวกเขา) และประกายความฝันซึ่งมอบให้กับนักเรียนฟรี
ดังที่กล่าวไว้หากคุณต้องการสำรวจและเรียนรู้ภาษาและแพลตฟอร์มใหม่ ๆ คุณจะพบเครื่องมือที่ดีกว่าในการเริ่มต้นบน Ubuntu และหากคุณกำลังมองหางานนอกระบบนิเวศของ Microsoft คุณจะต้องคุ้นเคย ด้วย Ubuntu
ฉันใช้ทั้งเครื่องมือ IDEs และ text-editors กับC ommand- L ine I nterface (ร้องเรียกว่าCLI ) เพื่อเขียนโปรแกรม
สิ่งที่ Linux เสนอคือCLI ที่มีประโยชน์เริ่มต้นจากการติดตั้งเริ่มต้น หากคุณไม่ต้องการสิ่งนั้นและคุณเพียงแค่ใช้ IDE อยู่ดีก็ไม่ต่างกันมากนัก (IMHO)
ฉันมักจะทำต้นแบบของฉันด้วยเครื่องมือที่ใช้ข้อความ ต่อมาเมื่อมีไฟล์เพิ่มเติมให้จัดการฉันให้ความสำคัญกับเครื่องมือrefactoringที่ IDE เสนอให้ฉัน
grep
คืออาร์กิวเมนต์ stdin และ stdout - คำไม่ได้บ่งบอกถึงสิ่งกราฟิกหรือหลอกกราฟิก อินเทอร์เฟซชนิดอื่น ๆ ได้แก่ เว็บ API โปรโตคอลอนุกรมและอื่น ๆ
ฉันจะโยนคำตอบของฉันลงในวงแหวน (แม้ว่าฉันเชื่อว่าสิ่งเหล่านี้ล้วนเป็นสิ่งที่ดีเช่นกัน)
คำตอบพื้นฐานที่สุดที่คุณจะได้รับคือทุกอย่างเกี่ยวกับปรัชญา
ในโลกไมโครซอฟท์มันค่อนข้างเคร่งศาสนา - คุณมีเทพเจ้าบนภูเขาทาคาโอะ Redmond ที่จะต้องมีการยื่นคำร้องหากคุณต้องการดำเนินการใด ๆ บางครั้งพวกเขาจะฟังบางครั้งการเสียสละและคำอ้อนวอนของคุณจะตกอยู่ในหูของคนหูหนวก บางทีพวกเขาออกล่า Microsoft ควบคุมระบบนิเวศทั้งหมด - พวกเขาเป็นเจ้าของระบบปฏิบัติการพวกเขาเป็นเจ้าของ IDE และพวกเขาจับคู่เข้าด้วยกันในรูปแบบที่อาจไม่เหมาะสมที่จะพูดคุยเกี่ยวกับเครือข่าย SE แม้แต่ภายในชิ้น IDE ก็ยังมีการเชื่อมต่ออย่างแน่นหนา - มันอาจถูกเรียกว่าบูรณาการแต่ฉันคิดว่าคู่นั้นมีความแม่นยำมากกว่า หากคุณต้องการเปลี่ยนแปลงบางสิ่งบางอย่างเล็กน้อย Gates ห้ามมิให้คุณต้องการเปลี่ยนแปลงบางอย่างในแบบที่นักออกแบบของ Windows หรือ Visual Studio ไม่อนุญาตอย่างชัดแจ้ง แล้วโยนเทคโนโลยีเช่น IE และ IIS เซิร์ฟเวอร์ Microsoft และ MS SQL Server และ Office ... และทุกอย่างเป็นครอบครัวที่มีความสุขที่ยิ่งใหญ่ แต่ถ้าคุณต้องการทิ้งครอบครัวไว้เบื้องหลัง ตัวสั่น !
ในอีกทางหนึ่งคุณมี Linux ซึ่งสืบทอดมาจากปรัชญา Unix ที่แต่ละชิ้นควรรับผิดชอบความรับผิดชอบเล็ก ๆ ของตัวเอง มันควรทำสิ่งหนึ่งและทำได้ดี และยิ่งการสื่อสารควรเกิดขึ้นผ่านสายอักขระของข้อความ เป็นคนอื่นได้ชี้ให้เห็นsed
, awk
, grep
ฯลฯ เป็นตัวอย่างที่สมบูรณ์แบบนี้ พวกเขาทำสิ่งหนึ่งที่พวกเขาถูกออกแบบมาให้ทำและพวกเขาทำได้ดีมาก หากคุณต้องการทำสองสิ่งคุณจะรวมเครื่องมือทั้งสองเข้าด้วยกัน ซึ่งเป็นเรื่องง่ายมากที่จะทำ
เนื่องจากsed
คาดว่าจะไม่มีสิ่งใดนอกจากอินพุตที่เข้ามาจะเป็นข้อความซึ่งหมายความว่าสิ่งใดก็ตามที่สามารถสร้างข้อความได้ไม่จำเป็นต้องบูรณาการวงล้อ sed
พวกเขาก็สามารถใช้ และเนื่องจากsed
ผลิตข้อความอะไรที่สามารถอ่านsed
ข้อความที่สามารถใช้เอาท์พุทจาก ข้อความมีความเป็นสากลมาก (มีข้อยกเว้นบางประการ) และมันง่ายมากที่จะรวมสิ่งต่าง ๆ เหล่านี้เข้าด้วยกัน
ไม่เพียง แต่จะง่ายต่อการรวมเข้าด้วยกัน แต่มันก็ง่ายมากที่จะแยกพวกเขาออกจากกัน - ถ้าฉันตัดสินใจว่าฉันไม่จำเป็นต้องแก้ไขสตรีมอีกต่อไป แต่ฉันต้องการกรองผลลัพธ์แทนที่จะส่งข้อความของฉันไปsed
ฉันสามารถผ่านได้ มันไปgrep
แทน
ตอนนี้นี่คือปรัชญาพื้นฐานที่อยู่เบื้องหลังการพัฒนาในสภาพแวดล้อม Linux - แม้ว่าคุณจะขึ้นจากที่นั่นเครื่องมือจำนวนมากก็มีอินเตอร์เฟสที่คล้ายกัน พวกมันช่วยให้คุณสามารถแยกมันออกเป็นส่วน ๆ หรือเชื่อมต่อพวกมันผ่านบรรทัดคำสั่งหรือพอร์ตหรือ HTTP
และแม้ว่าจะไม่เป็นเช่นนั้นคุณก็มีซอฟต์แวร์โอเพ่นซอร์ส ซอฟต์แวร์ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) บนแพลตฟอร์ม Linux เป็นโอเพ่นซอร์ส ดังนั้นหากคุณไม่ชอบวิธีการเขียนคุณสมบูรณ์สามารถเปลี่ยนซอฟต์แวร์ได้ด้วยตัวเอง นี่คือการเสริมพลังอย่างไม่น่าเชื่อ ไม่สามารถแยก IDE ที่เป็นแบบที่คุณต้องการได้ใช่ไหม ดำเนินการเปลี่ยนแปลงและส่งกลับมาที่ upstream หรือแยกโครงการ ไม่แน่ใจว่าทำไมบางสิ่งบางอย่างทำงานอย่างที่มัน? ใช้แหล่งที่มาลุค! ต้องการที่จะสามารถทำอะไรบางอย่างโดยอัตโนมัติผ่านบรรทัดคำสั่งหรือไม่ แฮ็คโครงการและติดการเปลี่ยนแปลงของคุณเจอข้อบกพร่องหรือปัญหาด้านความปลอดภัยหรือไม่ สวัสดีเดาอะไร - คุณสามารถแก้ไขได้ด้วยตัวเองคุณไม่ต้องรอให้ SP3.432vb89234.startdate1eQ ออกมา
คุณสามารถรวมเครื่องมือที่คุณต้องการและคุณต้องการ และถ้ามีบางอย่างที่ขวางทางคุณก็จะสามารถเปลี่ยนแปลงได้ 100% แม้ว่าคุณจะไม่มีความสามารถก็ตามคุณสามารถจ่ายเงินให้ใครบางคนเพื่อพัฒนาความเปลี่ยนแปลงนั้นหรือแม้กระทั่งแนะนำให้คนอื่นที่มีความรู้
เหตุผลที่ดีกว่าสำหรับการเขียนโปรแกรมคือเมื่อคุณเจอแรงเสียดทานคุณสามารถกำจัดมันออกจากเวิร์กโฟลว์ของคุณ เนื่องจากการพัฒนานั้นยากมีหลายสิ่งหลายอย่างที่คุณต้องคิดว่าจะเป็นโปรแกรมเมอร์ที่ประสบความสำเร็จและยิ่งคุณต้องคิดให้มากขึ้นเท่าไหร่ก็ยิ่งต้องคิดอะไรอีก
กำจัดแรงเสียดทานเป็นกุญแจสำคัญ
ดังนั้นหากระบบนิเวศน์วิทยาของ Microsoft เป็นที่ที่คุณรู้สึกเหมือนอยู่บ้านและคุณเพลิดเพลินกับเครื่องมือมากมายจนไม่ได้ให้แรงเสียดทานใด ๆ แก่คุณ ... ก็อาจเป็นเรื่องดี
แต่ถ้าคุณไม่เหมาะกับ Microsoft Mold (tm), อยู่ระหว่างการจดสิทธิบัตรคุณจะพบกับแรงเสียดทาน การพัฒนาจะต้องเจ็บปวด ทุกครั้งที่คุณหวังว่าคุณจะทำบางสิ่งได้ แต่ทำไม่ได้นั่นจะทำให้ทรัพยากรทางปัญญามีค่า และถ้าเป็นเช่นนั้นสภาพแวดล้อมการพัฒนา Linux น่าจะเหมาะกับคุณ
ฉันต้องการให้ความคิดทั่วไปของฉันกับคำถาม:
"ทำไม Linux จึงเป็นสภาพแวดล้อมที่ดีกว่าสำหรับการเขียนโปรแกรม"
ฉันคิดว่าเหตุผลที่สำคัญที่สุดที่ทำให้การพัฒนาบน Linux เป็นเพราะคุณมีความเข้าใจอย่างถ่องแท้ถึงซอฟต์แวร์ภายใน คุณสามารถเรียนรู้วิธีการทำงานจริง ๆ ถ้าคุณสนใจ ที่ช่วยให้คุณเรียนรู้และปรับการปฏิบัติที่ดีหรือไม่ดีโดยการเห็นพวกเขาปฏิบัติ สิ่งนี้จะช่วยให้ความคิดของคุณมีความหลากหลายมากขึ้น
นอกจากVisual Studioและ Xcode ซึ่งให้บริการตามวัตถุประสงค์เฉพาะแล้ว IDEs ยอดนิยมส่วนใหญ่ยังมีหลายแพลตฟอร์ม มันอาจจะดูเหมือนมี IDEs gazillion สำหรับหลายภาษา แต่ในท้ายที่สุดของพวกเขาจะขึ้นอยู่กับทั้งEclipse , IntelliJ IDEAหรือNetBeans สิ่งที่พวกเขามีเหมือนกันคือพวกเขาทั้งหมดที่ใช้ Java Java ทำงานได้อย่างมีประสิทธิภาพบน Linux มากกว่าบน OS อื่น ๆ บนฮาร์ดแวร์เดียวกัน ในความเป็นจริง Java เร็วเท่า 20% บน Linux มากกว่าบน OS X บนฮาร์ดแวร์เดียวกัน IDEs เหล่านี้จำนวนมากพร้อมที่จะติดตั้งด้วยคลิกเดียวใน Ubuntu Software Center
GCC กลายเป็นมาตรฐานอุตสาหกรรมอย่างมาก ไม่ต้องสงสัยเลยว่าแพลตฟอร์มหลักคือ Linux ซึ่งเป็นระบบที่รองรับได้ดีที่สุด และมันฟรีและปลอดค่าลิขสิทธิ์
Linux จัดเตรียมเครื่องมือที่ไม่เหมือนใครซึ่งไม่สามารถใช้ได้บนแพลตฟอร์มอื่นเช่นValgrind (เครื่องมือสำหรับการดีบักหน่วยความจำการตรวจจับการรั่วไหลของหน่วยความจำและการทำโปรไฟล์) ลินุกซ์ยังมาพร้อมกับเครื่องมือการดีบักเช่นstraceและltraceซึ่งสามารถใช้ในการดีบักแม้กระทั่งรหัสการผลิต (เช่นไม่ได้รวบรวมด้วยสัญลักษณ์การดีบัก) เครื่องมือที่เทียบเท่าสำหรับ Windows นั้นไม่มีอยู่จริงหรือมีราคาแพงมากและไม่ได้มีฟังก์ชั่นการใช้งานเดียวกัน
Ubuntu มีผู้จัดการแพกเกจที่ยอดเยี่ยม ในกรณีส่วนใหญ่การติดตั้งซอฟต์แวร์เป็นเพียงapt-get install package-name
(คุณสามารถทำได้ด้วย GUI ด้วยเช่นกันทั้ง Ubuntu Software Center หรือ Synaptic) เมื่อติดตั้งแล้วพวกเขาจะได้รับการอัปเดตโดยอัตโนมัติโดยระบบพร้อมการแก้ไขข้อผิดพลาด ระบบแพคเกจยังติดตามการอ้างอิงโดยอัตโนมัติดังนั้นคุณไม่ต้องกังวลเกี่ยวกับแพคเกจอื่น ๆ ที่จำเป็น พวกเขาจะถูกติดตั้งโดยอัตโนมัติ
ในทางตรงกันข้ามใน Windows คุณต้องดาวน์โหลดและติดตั้งแพ็คเกจด้วยตนเองและหากจำเป็นต้องใช้แพ็คเกจอื่นคุณต้องทำด้วยตนเอง ไม่มีการอัปเดตทั้งระบบอย่างใดอย่างหนึ่งแพคเกจซอฟต์แวร์แต่ละตัวจะใช้ตัวอัปเดตที่น่ารำคาญของตัวเองหรือไม่อัปเดตเลย
หากคุณทำการเขียนโปรแกรมใด ๆ สำหรับแบ็คเอนด์, สำหรับเว็บ, สำหรับคลาวด์, ฯลฯ เป็นไปได้มากที่เครื่องเป้าหมายของคุณคือ Linux มีความประหลาดใจที่น่ารังเกียจน้อยลงเมื่อคุณพัฒนาระบบปฏิบัติการแบบเดียวกันกับเครื่องเป้าหมายของคุณ
แน่นอนคุณอาจกำลังพัฒนาแอพพลิเคชั่นเดสก์ท็อปสำหรับ Windows แต่ทุกวันนี้นี่เป็นตลาดงานเฉพาะสำหรับโปรแกรมเมอร์
เหตุใดการเขียนโปรแกรมในไฟล์ข้อความหรือผ่านเทอร์มินัลจึงเป็นตัวเลือกที่ดีกว่า (เมื่อฉันอ่าน) กว่าการใช้ IDE (s) เช่น Visual Studio บน Windows
ไม่ใช่ฉันสามารถยืนยันได้ว่ามันค่อนข้างตรงกันข้าม โดยทั่วไปแล้วผู้คนมักชอบเครื่องมือที่พวกเขาทำได้ดีกว่า ประเภทของเครื่องมือที่คุณใช้อาจเป็นประโยชน์ต่อความสะดวกในการเขียนโปรแกรม ตัวอย่างเช่นฉันสามารถเขียนโปรแกรม Java ได้ดีกับ vim แต่มันกลับขัดขืนได้ผลจริง ๆ เมื่อเทียบกับ IDE ที่มีคุณสมบัติครบถ้วนเช่น Eclipse หรือ IntelliJ จอน Skeet ให้คำตอบที่ดีสำหรับคำถามทำไมใช้ IDE
กลับไปที่คำถามเดิมของคุณสิ่งเดียวที่ Linux ทำได้ดีกว่าคือการเขียนโปรแกรม C ทุกสิ่งที่คุณสามารถทำได้บน Linux คุณสามารถทำได้บน Windows และในทางกลับกัน (การเขียนโปรแกรมอย่างชาญฉลาด) การเขียนโปรแกรม C นั้นดีกว่าบน Linux ด้วยเหตุผลทางประวัติศาสตร์มันมีชุดเครื่องมือที่ยอดเยี่ยม (ซึ่งคุณสามารถใช้กับ Windows BTW แต่การติดตั้ง Linux นั้นง่ายกว่ามาก) ในทำนองเดียวกันหากคุณกำลังเขียน C # และชอบ. NET แล้ว Windows เป็นตัวเลือกที่ดีกว่าด้วยเหตุผลที่ชัดเจน ทุกสิ่งทุกอย่างเป็นเรื่องส่วนตัวอย่างสมบูรณ์และคุณจะได้ยินข้อดีและข้อเสียของทั้งสองฝ่าย
apt-get
มันยอดเยี่ยมเมื่อพูดถึงการพัฒนา C คุณสามารถได้รับเครื่องมือห้องสมุดและสัญลักษณ์การแก้ปัญหาสำหรับเช่นsudo apt-get install libcurl4-openssl-dev
, sudo apt-get install valgrind
, sudo apt-get install libz-dbg
และลองสิ่งออกได้อย่างง่ายดาย
เครื่องมืออะไร (ตัวแก้ไขข้อความหรือ IDE) ที่คุณใช้สำหรับการเขียนโปรแกรมเป็นเรื่องของการเลือก โดยทั่วไปคุณสามารถพูดได้ว่า: ผู้เริ่มต้นและโครงการขนาดเล็กมากมักจะใช้โปรแกรมแก้ไขข้อความที่ดีกว่าเช่นข้อความประเสริฐหรือแก้ไขเวอร์ชันของ gedit เพียงเพราะคุณเรียนรู้เพิ่มเติมเมื่อใช้โปรแกรมแก้ไขข้อความธรรมดา IDE สามารถทำให้กระบวนการเรียนรู้ของคุณแย่ลงโดยการทำสิ่งต่าง ๆ ให้เป็นอัตโนมัติ (เช่น Visual Studio ทำ;))
เมื่อพูดถึงมืออาชีพยุ่งกับเครื่องมือและภาษาจำนวนมาก IDEs มีประโยชน์เพราะพวกเขาสามารถทำอะไรได้มากมายสำหรับคุณถ้าคุณปล่อยให้พวกเขาทำ มีหลาย IDE ให้เลือกขึ้นอยู่กับภาษาที่คุณต้องการตั้งโปรแกรมมีตัวที่ดีกว่าและสะดวกกว่า
ประสบการณ์ส่วนตัวของฉันคือ Ubuntu OS นั้นติดตั้งได้เร็วกว่าและง่ายกว่าสำหรับการพัฒนามากกว่า Windows ฉันเข้าใจว่าเป็นเพราะเครื่องมือและโปรแกรมส่วนใหญ่ที่ฉันใช้คือ build บน Linux และเพราะฉันไม่ต้องค้นหาลิงก์ดาวน์โหลดไปยังโปรแกรมโปรดของฉันบนอินเทอร์เน็ต มันเป็นเพียง 'apt-get install program1 program2 program3' ในการเปรียบเทียบ: ฉันต้องการ 3 วันทำการในการติดตั้งและกำหนดค่าการติดตั้ง Windows ใหม่กับทุกสิ่งที่ฉันต้องการสำหรับการเขียนโปรแกรม (บริษัท ไม่ใช่แบบส่วนตัวที่จะเร็วกว่า) แต่ก็แค่หนึ่งวันสำหรับงานเดียวกันใน Ubuntu
ประสบการณ์ของฉันคือโปรแกรมเมอร์ผู้ที่เปลี่ยนมาใช้ Linux สำหรับการเขียนโปรแกรมมีความเข้าใจเชิงลึกเกี่ยวกับบริบททางเทคนิคและวิธีการทำงานพื้นฐาน ผู้ใช้ Mac และ Windows มักจะไม่ทราบว่าทำไมบางสิ่งบางอย่างทำงานแบบนี้หรือทำไมมันไม่ ฉันไม่แน่ใจว่าคุณสามารถเรียนรู้บางสิ่งบางอย่างจากการทำงานกับ Linux หรือเพียงแค่นั้นความตั้งใจที่จะเรียนรู้การเปลี่ยนมาใช้ Linux
หวังว่า "blafasel" ของฉันช่วยหน่อย ...
ฉันจะยืนยันว่าการกระจาย Linux เป็น IDE
สำหรับการเริ่มต้น Unix ได้รับการออกแบบตั้งแต่เริ่มแรกว่าเป็นสภาพแวดล้อมการพัฒนา มันถูกเขียนโดยโปรแกรมเมอร์สำหรับโปรแกรมเมอร์ Unixes และ Linux ส่วนใหญ่ยังคงมาพร้อมกับเครื่องมือการพัฒนาในการกำหนดค่าเริ่มต้น และชิ้นส่วนที่ขาดหายไปนั้นอยู่apt-get
ห่างออกไปเพียง(หรือเทียบเท่า) ในทางกลับกัน Windows เป็นสภาพแวดล้อมการพัฒนาที่แย่มากจนกว่าคุณจะติดตั้ง IDE ซึ่งไม่ถูกหรือเป็นเรื่องไม่สำคัญ
IDE นั้นมีการบูรณาการมากกว่าในแง่ที่ว่า IDEs นั้นมีความเชื่อมโยงอย่างแน่นแฟ้นยิ่งกว่าการใช้ GCC, Git และ Vi (ตัวอย่าง) การมีเพศสัมพันธ์อย่างแน่นหนาช่วยให้สิ่งต่าง ๆ เช่น 'intellisense' ทำงานได้ดีขึ้น แต่ในอีกทางหนึ่งการมีเพศสัมพันธ์แบบหลวมมีข้อดีหลายประการ (เช่นความยืดหยุ่นการใช้งานร่วมกันได้การขาดการล็อคอิน)
และความก้าวหน้าในการออกแบบคอมไพเลอร์ (คอมไพเลอร์ที่มีส่วนหน้าแยกได้ง่ายเช่น LLVM) ในที่สุดอาจหมายถึงการสนับสนุนที่ดีกว่าสำหรับคุณสมบัติเช่นข้อผิดพลาดทางไวยากรณ์ที่เน้นแม้ในสภาพแวดล้อมที่มีการคับคู่
ในเรื่องของปรัชญา: Ubuntu / Linux อนุญาตให้โปรแกรมเมอร์คอมพิวเตอร์เข้าถึงโดยตรงไปยัง internals และฮาร์ดแวร์ในขณะที่ Windows เป็นผู้รักษาประตู นี่เป็นประเด็นทางปรัชญาที่สำคัญเมื่อพูดถึงการเขียนโปรแกรม ดังนั้นการพูดเชิงปรัชญาคุณลักษณะนี้จะเป็นข้อได้เปรียบจะขึ้นอยู่กับว่าผู้ใช้มีความรู้เพียงพอหรือรู้ถึงความสำคัญทางเทคนิคของมัน
ในเรื่องของการเขียนโปรแกรม: สถาปัตยกรรมระบบทั้งหมดของ Ubuntu / Linux นั้นตั้งอยู่บนพื้นฐานของ Unix ของโปรแกรมขนาดเล็กที่ใช้งานง่ายทำสิ่งเดียวแล้วทำการรวมเข้าด้วยกันเพื่อทำสิ่งที่ซับซ้อนมากขึ้น สำหรับโปรแกรมเมอร์แล้วสถาปัตยกรรมนี้มีประสิทธิภาพอย่างไม่น่าเชื่อและในมุมมองของฉันคือเหตุผลที่ Unix จะได้รับชัยชนะในระยะยาวต่อสถาปัตยกรรมซอฟต์แวร์อื่น ๆ ในทุกแพลตฟอร์ม หนึ่งในไม่กี่แห่งที่ Unix ไม่โดดเด่นในปัจจุบันคือเดสก์ท็อป แต่จะเปลี่ยนไปตามกาลเวลา ดิสทริบิวชันเช่น Ubuntu ช่วยให้เห็นวิวัฒนาการนี้ผ่าน
อย่างไรก็ตามฉันไม่ได้โต้แย้งว่ามีสภาพแวดล้อมการเขียนโปรแกรมที่ดีมากใน Windows สำหรับการเขียนโปรแกรมภายในสภาพแวดล้อมขององค์กรเหล่านี้มักจะครอง
ความเร็วคือคำตอบการเรียงลำดับ
ฉันพบว่าด้วย IDE แบบกราฟิกเช่น Visual Studio หรือ QtCreator ที่ฉันใช้เมาส์มากเกินไปเมื่อฉันควรใช้ทางลัด ทุกครั้งที่คุณสลับบริบทคุณต้องหยุดสมองของคุณชั่วคราวมุ่งเน้นไปที่เป้าหมายของคุณและรอการดำเนินการ ในขณะที่กด F5 จะเร็วขึ้นอย่างไม่ จำกัด
ตอนนี้ถ้าคุณใช้เสียงเรียกเข้า, Emacs หรืออย่างอื่นที่ไม่มีปุ่มดูดีคุณจะเน้นไปที่การกดปุ่มคุณมีวิธีหนึ่งและกลายเป็นเร็วกว่าเพราะมันเป็นกิจวัตร
ข้อผิดพลาดจะถูกนำเสนอในลักษณะที่ละเอียดยิ่งขึ้นด้วยอินเตอร์เฟสบรรทัดคำสั่งที่ฉันต้องการและยังให้ข้อเสนอแนะในระหว่างการรวบรวม สิ่งหนึ่งที่ฉันเกลียดเกี่ยวกับ Visual Studio คือค่าเริ่มต้นคือไอคอนเล็ก ๆ ที่ระบุว่าทำคอมไพล์แล้วคุณจะได้รับรายการข้อผิดพลาด
ด้วยมุมมองที่แคบคุณจะเก็บไว้ที่ความกว้างคอลัมน์ 80 ซึ่งช่วยให้อ่านง่ายฉันได้เห็นโค้ดที่ขยายออกไปจนถึงความกว้างคอลัมน์ 200 ด้วยการปรับรหัสให้เหมาะสมกับ 80 คอลัมน์คุณสามารถเปิดหน้าต่างได้ครั้งละ 4/5 หน้าต่าง
ด้วยโปรแกรมแก้ไข CLI คุณสามารถโค้ดจากระยะไกลไม่จำเป็นต้องใช้เซสชัน RDP ที่ช้า (เทียบกับข้อความ) กับ Visual Studio ของคุณ คุณสามารถเขียนโค้ดผ่านลิงก์ GSM
รูปแบบการพัฒนาของ Visual sucks ข้อดีอย่างหนึ่งที่คุณอาจใส่ใน GUI IDE คือคุณสามารถวาดหน้าจอและทำได้เร็วขึ้น อย่างไรก็ตามในประสบการณ์ของฉันมันดีสำหรับต้นแบบ แต่บ่อยครั้งที่คุณได้รับผลลัพธ์ที่ดีกว่าด้วยการทำด้วยตนเองในรหัส เครื่องมือวิเคราะห์รหัส VS2012 เมื่อเช้านี้เพิ่งเตือนฉันเกี่ยวกับปัญหา 200+ รหัสที่สร้างขึ้นโดยอัตโนมัติโดย Visual Studio?!?!?
ฉันคิดว่าคำถามที่แท้จริงของคุณอาจเป็น "มีทางเลือก Visual Studio ใดบ้างที่จะทำงานบน Ubuntu เนื่องจากจะไม่มีหรือไม่"
MonoDevelop
มันใช้งานได้ แต่คุณจะเกลียดถ้าคุณคุ้นเคยกับ VS และคุณสมบัติทั้งหมด
ไม่มีประโยชน์ที่จะใช้โปรแกรมแก้ไขข้อความ จำไว้ว่าสิ่งที่ดีที่เรียกว่า Intellisense? ไม่เกิดขึ้น (แต่ MonoDevelop มีบางอย่างที่เหมือนกัน) หวังว่านี่จะช่วยได้
vim
ความชอบของพวกเขา นี่เป็นพื้นที่ส่วนตัวมาก! แม้ว่าหลายคนใช้ IDEs บน Linux ดังนั้นคุณจะต้องทำหลายสิ่งหลายอย่างที่นี่