ย้ายจาก Windows เป็น Linux [ปิด]


57

ฉันต้องตรวจสอบข้อเท็จจริง 2 ข้อต่อไปนี้:

  1. ฉันรู้สึกไม่สะดวกใจที่จะทำงานกับ Linux
  2. ฉันต้องการพัฒนาซอฟต์แวร์สำหรับ Linux

พื้นหลังบางอย่าง: ฉันมีประสบการณ์การเขียนโปรแกรม 10 ปีขึ้นไปบน Windows (เกือบจะเฉพาะ C / C ++ แต่บางอย่างเช่น. NET) ฉันเป็นผู้ใช้ FreeBSD ที่บ้านประมาณ 3 ปีหรือมากกว่านั้น (ต้องกลับไปที่ Windows) และฉันไม่เคยโชคดีกับ Linux มาก่อน และตอนนี้ฉันต้องพัฒนาซอฟต์แวร์สำหรับ Linux ฉันต้องการแผน

ใน Windows คุณสามารถรู้ได้ด้วยภาษาการเขียนโปรแกรม API ที่คุณเข้ารหัส IDE (VisualStudio) และเครื่องมือพื้นฐานบางอย่างสำหรับการแก้ไขปัญหา (ขึ้นอยู่กับ ProcessExplorer, DebugView, WinDbg) ทุกอย่างมาจากธรรมชาติ

บน Linux มันเป็นเรื่องที่แตกต่างกันมาก ฉันจะรู้ได้อย่างไรว่า DLL (ขอโทษด้วยวัตถุที่ใช้ร่วมกัน) จะโหลดได้อย่างไรถ้าฉันลิงก์ไปยังปลั๊กอิน Firefox อะไรคือ Linux ที่เทียบเท่ากับการแทรก __asm ​​int 3 / DebugBreak () ในแหล่งที่มาและเรียกใช้โปรแกรมแล้วปล่อยให้ระบบปฏิบัติการเรียก debugger? เหตุใดการสร้างรุ่นนรกจึงใช้บางสิ่งบางอย่างที่เรียกว่า appLoader ในขณะที่การตรวจแก้จุดบกพร่องรุ่นทำงานแตกต่างกันอย่างไร แย่ที่สุดของทั้งหมด: วิธีการจัดเตรียมสภาพแวดล้อมการพัฒนา Linux?

ดังนั้นเมื่อคำนึงถึงความเกลียดชังมักเกี่ยวข้องกับการไม่รู้จักพอคุณจะแนะนำอะไร ฉันโอเคกับ Emacs และ GCC ฉันต้องให้การศึกษาตนเองในฐานะผู้ดูแลระบบ / ผู้ใช้ Linux และฉันต้องเรียนรู้เครื่องมือแก้ไขปัญหาที่เหมาะสม (strace is cool, btw) เทียบเท่ากับเครื่องมือที่ฉันกล่าวถึงข้างต้น

ฉันต้องทำ Linux จาก Scratch หรือไม่? หรือฉันต้องอ่านหนังสือบางเล่ม (ฉันอ่าน "สภาพแวดล้อมการเขียนโปรแกรม UNIX" โดย Kernighan และ "Advanced Programming ... " โดย Stevens แต่ฉันต้องเรียนรู้สิ่งที่เป็นประโยชน์มากกว่านี้)? หรือฉันต้องมีลีนุกซ์ distro บนคอมพิวเตอร์ที่บ้านของฉัน?


73
ฉันรู้สึกเหมือนกันกับ Windows

15
ถือว่าเป็นการได้งานใหม่ที่คุณรู้สึกสบายใจกว่านี้อีกไหม?

3
On Unices manคือเพื่อนของคุณ ฉันจะman nmและman ldเป็นจุดเริ่มต้น
dietbuddha

1
เริ่มใช้ windows;)
Jigar Joshi

1
"ทุกอย่างมาจากธรรมชาติ"? แน่นอนว่ามันเกิดขึ้นตามธรรมชาติคุณทำมา 10 ปีแล้ว ลินุกซ์ไม่ได้เลวร้ายของมันแตกต่างกัน และตอนนี้เมื่อคุณอายุมากกว่า 10 ปีสมองของคุณก็ไม่ได้เรียนรู้สิ่งใหม่ ๆ อย่างง่ายดายเหมือนที่เคยเป็นมาและสิ่งต่าง ๆ เหล่านั้นที่แตกต่างกันกลายเป็นสิ่งที่คุณต้องเรียนรู้ การเข้าใกล้สิ่งทั้งหมดด้วย "Linux sucks" จะทำให้ชีวิตของคุณมีความสุข
JesperE

คำตอบ:


62

คุณอาจพบบทความการเชื่อมโยงแบบไดนามิกใน Linux และ Windows ที่น่าสนใจซึ่งอธิบายว่าแต่ละระบบปฏิบัติการเชื่อมโยงแบบไดนามิกได้อย่างไร บทความการแชร์ไลบรารีการค้นหาเส้นทางอธิบายวิธีการค้นหาไลบรารี นอกจากนี้ยังมีไลบรารีแบบคงที่, แชร์แบบไดนามิกและแบบโหลดได้ดีมาก สิ่งที่ดีเกี่ยวกับห้องสมุด Linux คือพวกเขาได้รับการสนับสนุนการกำหนดเวอร์ชันที่ดีกว่าและมีห้องสมุดหลายเวอร์ชันรอบ ๆ มากกว่า Windows (AFAIK ฉันไม่ได้ใช้ Windows) ดูห้องสมุดอินเตอร์เฟซรุ่นใน Solaris และลินุกซ์สำหรับการที่ บทความเหล่านี้ควรให้คุณได้รับความคุ้มครองจากห้องสมุดจริงๆ

GDB อานุภาพมากแนะนำที่ดีน่าจะเป็นRMS ของ gdb กวดวิชา คุณอาจต้องการอ่านค่าเบรกพอยต์แบบมีเงื่อนไข สำหรับเทียบเท่า__asm(int 3)ดูคำถามที่ตั้งเบรกพอยต์ในรหัส C หรือ C ++ โปรแกรมสำหรับ gdb บน Linux

หนังสือขั้นสูง Unix Programmingจาก Marc Rochkind เป็นสิ่งที่ต้องอ่าน มีตัวอย่างมากมายและครอบคลุมหัวข้อ POSIX / SUS ทั้งหมดด้วยวิธีที่อธิบายได้ดีมาก มันเป็นหนังสือที่ดีที่สุดเกี่ยวกับหัวข้อนี้ที่ฉันอ่านมา

แต่เพื่อทำให้ชีวิตของคุณง่ายขึ้นฉันแนะนำให้ใช้ API ระดับสูงที่เป็นนามธรรมสำหรับคุณเช่น Qt ยังทำให้การเขียนข้ามแพลตฟอร์มง่ายขึ้นมาก

การทำ Linux from Scratch ช่วยให้คุณเข้าใจเกี่ยวกับวิธีการสร้างระบบ Linux แต่ฉันคิดว่ามันไม่ได้พัฒนาความรู้ของคุณมากนักจากมุมมองของนักพัฒนา มันทำให้คุณคุ้นเคยกับ Linux ได้ดีขึ้นเนื่องจากคุณได้เรียนรู้ว่าส่วนใดบ้างที่อยู่ในสภาพแวดล้อม Linux (และส่วนหนึ่งเป็นเพราะอะไร ) Linux จะไม่เป็นกล่องดำขนาดใหญ่สำหรับคุณหลังจากทำงานผ่าน Linux จาก Scratch


แน่นอนว่าในระบบ 32 บิตการขัดจังหวะนี้จะบุกเข้าไปในตัวดีบั๊กหากกระบวนการนั้นกำลังถูกดีบั๊กอยู่ นั่นคือถ้าฉันถามเกี่ยวกับ Windows อนุญาตให้แนบดีบักเกอร์หลังจากกับดักเกิดขึ้น ภายใต้บางสถานการณ์สิ่งนี้สะดวกมาก และขอบคุณสำหรับลิงค์!
rincewind

6
คำตอบที่ดี! หมายเหตุสำหรับการสอน gdb นั้น RMS คือ "Ryan M. Schmidt" ไม่ใช่ "Richard M. Stallman" (หมายเหตุสำคัญตั้งแต่ Stallman เป็นผู้แต่งต้นฉบับของ GDB)
entropo

Windows มีการโหลดไลบรารีแบบเคียงข้างกัน ( msdn.microsoft.com/en-us/library/ms229072(v=vs.80).aspx ) เป็นเวลาประมาณ 12 ปี ดังนั้นคุณค่อนข้างผิดเกี่ยวกับเวอร์ชัน
Claus Jørgensen

16

หากคุณต้องการstraceอย่าลืมltrace: การเทียบเท่าสำหรับการโทรเข้าห้องสมุด
นอกจากนี้ใช่ผมขอแนะนำให้ลินุกซ์ตั้งแต่เริ่มต้น มันเป็นแบบฝึกหัดที่ดีในการหาองค์ประกอบหลักของระบบปฏิบัติการและวิธีการที่พวกมันเข้ากันได้ดี
สำหรับทันสมัยรักษาอ้างอิงที่สมบูรณ์การเขียนโปรแกรมระบบผมอยากแนะนำให้ยกขึ้นลินุกซ์ Programming Interface


12

Mac OS X เปรียบเสมือน Mercedes มันสวยที่สุดและสะอาดที่สุด แต่ก็ราคาเยอะมาก Windows เปรียบเสมือนโตโยต้า มันจะพาคุณไปที่นั่นและกลับมา

ลินุกซ์เป็นเหมือนก้านร้อน มีไว้สำหรับคนที่จะขุดและแยกออกจากกันและกลับมารวมกันอีกครั้ง Linux ไม่ใช่สำหรับผู้ที่ต้องการใช้คอมพิวเตอร์เท่านั้น สำหรับคนที่รักคอมพิวเตอร์ คนที่ไม่รักคอมพิวเตอร์ควรอยู่ห่างจากมัน

สิ่งที่คุณเรียนรู้ใน Windows จะแปลได้ไม่ดีนัก แต่คุณจะได้เห็นภายในและดูการทำงานของเครื่องยนต์

ลองใช้ Linux เป็นของเล่นใหม่ที่คุณสามารถเล่นและคลานเข้าไปดูว่ามีอะไรเกิดขึ้น สิ่งที่ง่ายใน Windows นั้นยากกว่าใน Linux สิ่งที่เป็นไปไม่ได้ใน Windows เป็นไปได้ใน Linux

หากคุณรักคอมพิวเตอร์คุณสามารถรัก Linux; ถ้าคุณไม่รักคอมพิวเตอร์ทำไมคุณเขียนโปรแกรมเลย


13
+1 สำหรับ " สิ่งที่ง่ายใน Windows ยากกว่าใน Linux และสิ่งที่เป็นไปไม่ได้ใน Windows นั้นเป็นไปได้ใน Linux " ฉันจะเพิ่ม "ในขณะที่ Windows ผลักอาหารที่ย่อยไว้ล่วงหน้าในปากของคุณด้วย Linux คุณมีความเป็นไปได้ที่จะทำอาหารและรางวัลสำหรับสิ่งนี้คือคุณได้กินสิ่งที่คุณชอบ " ... แน่นอนไม่ว่าจะกินได้หรือไม่ ขึ้นอยู่กับว่าคุณเป็นพ่อครัวที่ดีแค่ไหน ...
Alain Pannetier

14
@Andy: "Windows เป็นเหมือนโตโยต้า" โตโยต้ามีคุณภาพดีกว่า Windows มาก
Reinstate Monica

4
@ SK-logic แม่นยำ โปรดพิจารณาสิ่งต่อไปนี้โดยไม่เกี่ยวข้องกับสงครามทางศาสนาอื่น ด้วยเหตุผลเชิงกลยุทธ์และการเงินเพียงอย่างเดียว MS มุ่งเน้นกลุ่มเป้าหมายที่ใหญ่ที่สุด ข้อมูลทางเทคนิคที่ผู้ใช้คอมพิวเตอร์ที่รับรู้ว่าต้องการควบคุมสามารถถูกฝังอยู่นอกสายตาเพื่อให้โจนส์ไม่พบปัญหา คุณจบลงด้วยเทปสีแดงทุกที่ DEP, GPO, "ตัวติดตั้งที่เชื่อถือได้", API ส่วนตัวหรือที่ซ่อนอยู่, "บูตซ่อมแซมตัวเอง" เป็นต้น Geeks ไม่ได้แก้ไข Windows พวกเขาเพิ่งเลิกใช้ ลีนุกซ์ไม่ได้มีเป้าหมายเป็นเจ้าโลกเดียวกัน มันทำโดยผู้ใช้สำหรับผู้ใช้ นั่นคือประเด็นทั้งหมด
Alain Pannetier

3
@ SK-logic - "ถ้าคุณมีแหล่งที่มาของ Windows" ... :-)
Rory Alsop

3
"มายด์ตั้งชื่อสองสิ่งที่เป็นไปไม่ได้ใน Windows" และ "เป็นไปได้ใน Linux" - ฉันพบข้อบกพร่องในสคริปต์ระบบ Linux และแก้ไขมันฉันพบข้อบกพร่องใน Windows แต่ไม่สามารถแก้ไขได้สมมติว่าคุณ มีอิมเมจ ISO (CD) ในไฟล์ดิสก์ฉันสามารถเมานต์เป็นไดรฟ์ใน Linux คุณสามารถทำสิ่งนั้นใน Windows ได้หรือไม่และจำไว้ว่าเกือบทุกอย่างใน Linux นั้นฟรีและเกือบทุกอย่างใน Windows ต้องการแอปพลิเคชันที่มีราคาแพง
Andy Canfield เมื่อ

9

แล้วคุณพัฒนาโมโนกับ Monodevelop ได้อย่างไร? สิ่งนี้จะช่วยให้คุณเริ่มต้นได้ง่าย ๆ โดยการใช้ประสบการณ์ของคุณใน. NET อีกครั้ง


ฉันลองสิ่งนี้เมื่อไม่นานมานี้ - ความแตกต่างบางอย่างของ Visual Studio แน่นอน แต่ฉันก็เริ่มทำงานในตอนเย็น มันเป็นเส้นทางการโยกย้ายที่ดี
JBRWilkinson

8

มันน่ากลัวเมื่อคุณดูตั้งแต่เริ่มต้น (เหมือนกับว่าคุณเป็นนักพัฒนา Linux ที่ได้รับมอบหมายให้ทำการพัฒนา Windows บางอย่าง) ฉันจะแก้ไขปัญหานี้ทีละครั้ง

  • ก่อนอื่นรับการตั้งค่าสภาพแวดล้อมของคุณ (คอมไพเลอร์ IDE - ใช่มี Netbeans / Eclipse เป็นต้น)
  • ถัดไปรับ apis ระดับสูงกว่าติดตั้ง (เพิ่ม / Qt ฯลฯ )
  • เริ่มต้นอย่างช้า ๆ หากมีปัญหาเร่งด่วนที่จะแก้ไขได้รับการรวบรวมรหัส (หรือเริ่มเขียนจากศูนย์ ฯลฯ ) เช่นเดียวกับที่คุณจัดการกับโครงการพัฒนาใด ๆ รับสิ่งที่คุณรู้ว่าทำงานก่อน (เช่นสิ่งที่ไม่ต้องการระบบปฏิบัติการเฉพาะ การโต้ตอบ) และเมื่อคุณเจออุปสรรค - ค้นหาฉันแน่ใจว่ามีคนที่เคยเจอปัญหาเดียวกันมาก่อนและได้แก้ไขมัน ..

สิ่งสำคัญที่สุดคือให้ความคิดเห็นส่วนตัวของคุณไว้ที่หน้าประตู และไม่คุณไม่จำเป็นต้องเป็นกูรูในการพัฒนาใน Linux ฉันรู้พอที่จะทำอะไรไม่ใช่ทุกอย่าง - แต่ฉันพอใจกับมัน ...


1
+1 Nim: StackExchange มีข้อมูลก่อนหน้าจำนวนมากที่นี่ ฉันรู้สึกสบายใจที่สุดในรสชาติของ Unix แต่ปัจจุบันทำงานในสภาพแวดล้อมการพัฒนาของ Windows และการค้นหา SE ได้ตอบคำถามของฉันเกือบทั้งหมดในระยะเวลาอันสั้น
Rory Alsop

6

The success or failure of many thing in life comes down to our attitude, looking for positives and keeping your mind focused on the positives will do more to adide you as you start down this new interesting adventure.

นานแค่ไหนที่คุณจะมีความเชี่ยวชาญในการทำงานในสภาพแวดล้อมของ windows คุณอาจบอกว่ามันง่ายที่คุณเพิ่งเริ่มต้น แต่คุณเคยทำงานกับหน้าต่างมาสองสามปีแล้ว นานแค่ไหนที่คุณใช้ windows ก่อนที่คุณจะเขียนโปรแกรมกำปั้นของคุณ เป็นเวลา 8 ปีสำหรับฉันแม้ว่าฉันจะใช้ Linux มาเกือบ 5 ปีแล้วก็ตาม ตอนนี้ฉันมีความเชี่ยวชาญใน Linux มากขึ้นจากนั้นใน windows คุณควรให้เวลากับตัวเองอย่างน้อยก็ทำความคุ้นเคยกับระบบใหม่

เริ่มต้นด้วยรายการแอปพลิเคชันที่คุณไม่สามารถอยู่ด้วยได้ใน Windows และมองหาทางเลือกในโลก * nix http://alternativeto.net/และส่วนการอ่านเพิ่มเติมเกี่ยวกับ Wikipedia จะเป็นประโยชน์ที่นี่

นี่คือรายการซอฟต์แวร์ทางเลือกที่สามารถพิสูจน์ได้ว่ามีประโยชน์มาก ต่อไปนี้เป็นทางเลือกสำหรับสิ่งที่คุณพูดถึง

ทรัพยากรที่มีประโยชน์อื่น ๆ ในการย้ายจากระบบหนึ่งไปอีกระบบหนึ่ง

เกี่ยวกับการเป็นผู้ใช้ที่มีพลังมากขึ้นหรือผู้ดูแลระบบได้ดูทรัพยากรเหล่านี้

ดูเหมือนว่าคุณจะเคยเห็นโลก * มานานแล้ว ฉันจะแนะนำบางส่วนของ distros รุ่นใหม่จากฟาง , SUSE , เดเบียนหรือสถานีงานของฉันที่ต้องการอูบุนตู

ตอนนี้คุณสามารถหนีไปได้โดยไม่รู้ว่าภายในของระบบและเป็นพื้นฐานในหน้าต่าง ฉันจะไม่เพียงแค่พยายามหนีให้น้อยที่สุด ถ้าคุณเห็นว่าลีนุกซ์เป็นเครื่องมือที่ช่วยคุณในการพัฒนาจริง ๆ และไม่ใช่ระบบปฏิบัติการที่คุณพัฒนามันจะมีประโยชน์

Linux from Scratch จะมีความสำคัญมากกว่านี้หากคุณกำลังพัฒนาเป็นพิเศษสำหรับ Linux นั้นมีความเฉพาะและมีความรู้ด้านเทคนิค IE ที่คุณต้องการพัฒนาสำหรับเคอร์เนลหรือพอร์ตที่คุณเขียนโปรแกรมไปยังคอมพิวเตอร์ super ที่ใช้ Linux มันจะมีประโยชน์มากไม่น้อย ฉันคิดว่าคุณน่าจะทิ้งไว้ซักสองสามเดือนในขณะที่คุณแค่ลองไปทำใน Ubuntu Ubuntu จะใกล้เคียงกับสิ่งต่าง ๆ ที่ใช้งานได้ทั้งโลกของ mac และ windows


1
เดเบียนไม่ได้เป็น distro ใหม่อย่างแน่นอน :-P มันยังคงเป็นตัวเลือกที่ดี
Steve S

SuSE และ Fedora ... SuSE อายุ 15 ปีแล้ว Fedora เป็นหนึ่งใน distros "น้อง" ที่มีอายุ 8 ปี ถึงกระนั้น +1
DarkDust

1
@Darkdust @ Steve-s ใหม่เหมือนในรุ่นล่าสุด
nelaaro

6

ฉันคิดว่าคุณตอบคำถามของคุณในคำถาม:

"ใน Windows คุณสามารถหลบไปกับการรู้ภาษาการเขียนโปรแกรม API ที่คุณเข้ารหัส IDE ของคุณ (VisualStudio) และเครื่องมือพื้นฐานบางอย่างสำหรับการแก้ปัญหา (ขึ้นอยู่กับ ProcessExplorer, DebugView, WinDbg) ทุกอย่างมาจากธรรมชาติ "

อะไรที่คุณรู้บน Linux คุณสามารถรู้ภาษาการเขียนโปรแกรม API (หรือคู่) IDE ของคุณ (Eclipse หรือ NetBeans แม้ Geany, Emacs หรือ vim ถ้าคุณต้องการ) และเครื่องมือพื้นฐานบางอย่างสำหรับการแก้ไขปัญหา ( gdb, เครื่องมือติดตาม, lint, htop, ps)

คุณมีความรู้มากมายที่ลงทุนในระบบนิเวศการเขียนโปรแกรม Windows (หวังว่า) ความรู้เชิงนามธรรม (คอมไพเลอร์, ดีบั๊ก, ไลบรารีแบบแบ่งใช้, กระบวนการ, เธรดคืออะไรพวกเขาทำอะไร?) ที่จะแปลได้อย่างง่ายดายเมื่อคุณเพิ่มความเร็วในเครื่องมือที่แตกต่างกัน บางโดเมนมีความเฉพาะเจาะจง (DLL เชื่อมโยงอะไรเมื่อฉันเพิ่ม X ลงในโครงการ?) แต่แม้การย้ายจากภาษาหนึ่งไปยังอีกภาษาหนึ่งภายในห้องเรียนจะต้องมีการเรียนรู้ใหม่

ติดตั้ง Ubuntu หรือ Fedora ใน VM อ่านบทเรียน C ++ Hello World ใน Eclipse หรือ NetBeans และตรวจแก้จุดบกพร่องในบทเรียน Eclipse / NetBeans และปล่อยให้สมองของคุณมีความสามารถในการปรับใช้ มันจะแปลความคิดให้คุณถ้าคุณผ่อนคลายและแค่นำมันไปใช้งาน


3

ฉันเรียน Unix โดยทั่วไปโดยอ่าน man pages อย่างน้อยคุณควรเรียดพวกเขา ใช่ฉันหมายถึงพวกเขาทั้งหมด วิธีที่ฉันใช้มันเพื่อ cd ลงในไดเรกทอรีหน้าคนและโจมตีพวกเขาทีละส่วน

ฉันใช้สิ่งนี้:

for i in *; do f=`basename $i .gz`; man `basename $f .1` ; done

... แทนที่. 1ด้วยหมายเลขของส่วนที่คุณกำลังอ่าน, .2, .3 ฯลฯ กด ctrl-Z ctrl-C เพื่อออกจากลูป ระยะทางของคุณอาจแตกต่างกันไปหาก linux distro ของคุณจัดเก็บสิ่งต่าง ๆ เช่นไม่ใช่ cmdname.1.gz

เพียงทำตามคำอธิบายและอื่น ๆ ถ้ามันเป็นสิ่งที่น่าสนใจ ส่วนที่ 1, 2 และ 3 เป็นสิ่งสำคัญที่สุดสำหรับโปรแกรมเมอร์ 1 ครอบคลุมคำสั่งผู้ใช้ทั่วไปซึ่งรวมถึงเครื่องมือการคอมไพล์ของคุณและยูทิลิตี้นิติเวชต่างๆ 2 คือการเรียกของระบบและ 3 เป็นการเรียกใช้ไลบรารี


2
ฉันขอแนะนำให้ใช้ไฟxmanเป็นส่วนติดต่อที่“ เป็นมิตร” มากกว่า เลือกส่วนคลิกหน้าคนอ่าน ล้างซ้ำ
ΤΖΩΤΖΙΟΥ

ฉันลืมเรื่องนี้ไป สถานะของเอกสารในที่ดินระบบปฏิบัติการฟรีนั้นน้อยกว่าอุดมคติและฉันพบว่าเครื่องมือมักจะทำให้แย่ลงดังนั้นฉันจึงหยุดใช้ ฉันเดาได้แค่ว่าพวกเขาดีขึ้นแล้วเหรอ?
Hack Saw

3

อย่าบังคับตัวเองให้ทำสิ่งที่คุณไม่ชอบ ใช้ Windows เป็นสภาพแวดล้อมการพัฒนาของคุณเขียนรหัสพกพาไขว้คอมไพล์สำหรับ Linux และทดสอบเฉพาะใน VM เป็นครั้งคราว


2

ฉันไม่แน่ใจว่ามันใช้งานได้กับแพลตฟอร์ม แต่สำหรับภาษาการเขียนโปรแกรมฉันพบว่ามันมีประโยชน์ที่จะคิดว่าฉันคุ้นเคยและคุ้นเคยกับสิ่งที่ฉันทำได้ดีและพยายามที่จะเล่นซ้ำประสบการณ์และกิจกรรมเหล่านั้นในสิ่งที่ฉันทำ ฉันพยายามเรียนรู้

บางทีสิ่งที่อยู่ในบรรทัดเหล่านั้น?

แม้ว่าโดยทั่วไปแล้วความสนใจและความมั่นใจของฉันที่มีต่อ GNU / Linux นั้นมาจากการปรับเปลี่ยนได้มากขึ้น (และต้องการการแก้ไขในช่วงแรก ๆ ) กว่า Windows ฉันต้องยุ่งกับสิ่งต่าง ๆ มากมายเพื่อให้สิ่งต่าง ๆ ทำงานและนั่นช่วยให้ฉันเรียนรู้สิ่งต่าง ๆ มากมาย ตอนนี้ทุกอย่างดีขึ้นมาก แต่ทุกชั่วโมงก็ช่วยได้


2

ฉันเป็นคนหนึ่งในสองคนที่มีบางอย่างที่คล้ายกัน แต่แตกต่างกัน ฉันทำงานในโรงเรียนเขต K-12 และระบบธุรกิจ (HR, การเงิน, ฯลฯ ... ) กำลังย้ายจาก HP3000 / TurboImage db ไปเป็นแพลตฟอร์ม Linux / MS SQL ฉันพอใจกับ MS SQL แต่ไม่ใช่ด้านลินุกซ์ เราสองคนอยู่ด้านผู้ดูแลไม่ใช่ด้านการเขียนโปรแกรม การเขียนโปรแกรมทำนอก - แอพธุรกิจบุคคลที่สามสำหรับ K-12 orgs

ฉันเข้าเรียนในช่วงสุดสัปดาห์ 5 สัปดาห์สำหรับ Linux (Redhat) ในวันหยุดสุดสัปดาห์ซึ่งส่วนใหญ่ทำในโหมดบรรทัดคำสั่ง - และมันก็คุ้มค่ากับเวลาสำหรับฉันที่จะเริ่มต้นอย่างรวดเร็วในวิธีการทำสิ่งต่าง ๆ ของ Linux เห็นได้ชัดว่า YMMV ขึ้นอยู่กับชั้นเรียน / ครู

คุณพูดถึง 'แย่ที่สุดของทั้งหมด: วิธีการจัดเตรียมสภาพแวดล้อมการพัฒนา Linux?'? เนื่องจากคุณคุ้นเคยกับ Windows อยู่แล้วฉันขอแนะนำให้คุณรับสำเนาของ vmWare Workstation ด้วยการที่คุณสามารถทำให้ Windows เป็นเวิร์กสเตชันของคุณและติดตั้ง Linux เป็นระบบของแขก - ลบล้างและทำซ้ำได้ตามต้องการ เมื่อคุณได้รับการตั้งค่าที่ดีฉันเชื่อว่าคุณสามารถถ่ายภาพได้ แต่ฉันไม่สามารถบอกได้ว่าเวอร์ชั่นใดที่สามารถถ่ายภาพสแนปชอตได้ และถ้าคุณไปในเส้นทาง vmWare Workstation เพื่อเปิดใช้งานการตั้งค่าการพัฒนาที่หลากหลาย - ชนหน่วยความจำอย่างแน่นอน

ฉันไม่รังเกียจที่จะแนะนำให้ใช้ CentOS เป็น Linux OS สำหรับแขก จากสิ่งที่ฉันเข้าใจมันเหมือนกับ RedHat ที่ไม่มีแบรนด์และ / หรือระยะห่างจากการขายและ / หรือค่าใช้จ่ายในการสนับสนุน ฉันไม่คุ้นเคยกับรสชาติ Linux อื่น ๆ ดังนั้นจึงไม่สามารถให้ข้อมูลกับสิ่งเหล่านั้นได้

เกร็ก


1

ฉันชอบทั้งสองแพลตฟอร์มและสำหรับความแตกต่างทั้งหมดในส่วนติดต่อผู้ใช้และระบบนิเวศ dev ฉันพบว่าพวกเขาคล้ายกันมากกว่าที่แตกต่างกันภายใต้ฝาครอบ อันที่จริงแล้วสำหรับแนวคิด Windows ส่วนใหญ่คุณสามารถค้นหาลีนุกซ์ที่เทียบเท่าได้เพียงแค่ค้นหาจากอินเทอร์เน็ต

ต้องบอกว่าฉันขอแนะนำให้เรียนรู้วิธีการทำสิ่งต่าง ๆ "วิธี Unix" ใช้บรรทัดคำสั่งมากกว่า buggy GUI front-end (ฉันกำลังพูดถึง gdb ส่วนใหญ่ที่นี่); อย่ามองหา IDE และเรียนรู้วิธีใช้ชุดเครื่องมือพิเศษแทน เลือกเครื่องมือแก้ไขที่ดี (ชี้ไปที่กลุ่ม) และเรียนรู้ได้ดี อ่านวิธีการmakeทำงานแม้ว่าคุณจะไม่ได้วางแผนที่จะเป็นผู้เชี่ยวชาญ บางทีคุณอาจจะชอบ Linux มันเป็นมิตรกับบุคคลทั่วไปและสนุกกับการเล่น


1

ลองพิจารณาสิ่งนี้: คุณไม่เคยรู้อะไรเกี่ยวกับ Windows แต่คุณได้เรียนรู้และเมื่อเวลาผ่านไปก็รู้สึกสบายใจ

MS เปลี่ยนระบบการเขียนโปรแกรมอะไรก็ตามที่คุณคุ้นเคยกับ. NET และคุณไม่รู้อะไรเกี่ยวกับ DLLS, COM และอะไรก็ตามคุณต้องเรียนรู้สิ่งต่าง ๆ เช่นแอสเซมบลี GAC โดเมนแอป คุณเรียนรู้สิ่งที่ตกลง

เหตุใดคุณจึงกังวลเกี่ยวกับการทำเช่นเดียวกันกับ Linux

มีบทช่วยสอน 'ให้คุณเริ่มต้น' มากมายบนเว็บสำหรับสภาพแวดล้อมการเขียนโปรแกรมทุกประเภท ตอนนี้คุณบอกว่า GCC ดังนั้นฉันจะถือว่าการพัฒนา C ++ รับ Eclipse ติดตั้งCDT (เครื่องมือ dev) ที่ด้านบนของแพลตฟอร์ม Eclipse ของคุณ (Eclipse เป็น IDE อเนกประสงค์คุณสามารถใช้กับ C ++, PHP, Java, อะไรก็ได้ แต่คุณต้องติดตั้งเครื่องมือสำหรับภาษาของคุณ ในขณะที่คุณไม่ต้องการมันทั้งหมดที่ติดตั้งล่วงหน้าเช่น VS และใช้เวลา 3 วันในการติดตั้ง :))

มีบทช่วยสอนที่ใช้งานง่ายทั่วเว็บ IBM มีที่นี่ที่ค่อนข้างครอบคลุม

เครื่องมือตรวจแก้จุดบกพร่อง ... eclipse ฝังตัวอยู่ ( กวดวิชา ) แต่คุณสามารถค้นหาเครื่องมือมากมายเช่นเครื่องมือที่คุณพูดถึงเพียงค้นหาจากเว็บและคุณจะพบตัวเลือกมากมาย คุณจะต้องใช้เวลาสักครู่ในการหาวิธีอ่านการถ่ายโอนข้อมูลหลัก (ตรงข้ามกับตัวอย่างหน้าต่าง userdump) แต่คุณจะไปถึงที่นั่น

มันอาจจะคุ้มค่าที่จะเริ่มต้นบล็อกด้วยประสบการณ์ของคุณไม่เพียง แต่จะช่วยให้คุณเตือนตัวเองถึงสิ่งที่คุณทำ (เช่นการตั้งค่าคราสตามที่คุณชอบคุณจะลืมเมื่อคุณต้องทำอีกครั้งใน เวลาของปี) แต่มันจะช่วยคนอื่นในสถานการณ์ของคุณ


0

ฉันไม่คิดว่าคุณต้องทำ Linux ตั้งแต่เริ่มต้น ถ้าฉันเป็นคุณฉันจะไปหาอูบุนตู สะดวกสบายมากขึ้นและเป็นไปตามเดเบียนมีวัสดุทางเทคนิคมากมาย

หากคุณต้องการดำน้ำลึกเข้าไปในลีนุกซ์มากขึ้น Gentoo เป็นตัวเลือกที่ดี มันต้องการให้คุณอ่านค่อนข้างเยอะเกี่ยวกับการตั้งค่าและเคอร์เนล แต่มันก็ทำให้คุณมีระบบการทำงานที่ใช้งานได้


0

Google "ศิลปะแห่งการเขียนโปรแกรม Unix" และอ่าน IMO ปัญหาหลักของคุณคือปรัชญาที่แตกต่างกันและหนังสือเล่มนี้เป็นหนังสือที่ยอดเยี่ยมสำหรับการอ่านนี้

นอกจากนี้ยังแนะนำให้คุณทราบถึงความแตกต่างที่ไม่ชัดเจน แต่มีความสำคัญทางเทคนิคระหว่างระบบ * n * x และ Windows - สิ่งเหล่านี้เป็นกุญแจสำคัญในการทำความเข้าใจว่าทำไมการทำสิ่งต่าง ๆ จึงมีเหตุผลบน Linux


1
... และมันยังมอบเครื่องมือและเทคนิคมากมายให้คุณใช้บน Linux

0

คำถามแรกที่ฉันถามคืออะไรที่คุณต้องการพัฒนา หากเป็นแอปพลิเคชั่นที่ใช้ gui ซึ่งอาจแตกต่างจากการเขียนบางอย่างเช่นส่วนขยายเคอร์เนล

ในกรณีของแอพ gui ฉันพบว่าวิธีที่ง่ายที่สุดคือการใช้ Qt ซึ่งมีสภาพแวดล้อมการพัฒนาของตัวเอง (Qt-Creator) และเป็นข้ามแพลตฟอร์มช่วยให้คุณเรียนรู้ API เดียวที่สามารถใช้กับ Windows / Linux / OSX และแม้แต่การพัฒนาอุปกรณ์พกพา เช่นเดียวกับ visual studio ใน Windows หรือ XCode ใน OSX คุณสามารถสร้างและวางเลย์เอาต์ของหน้าต่างและไอเท็มจากโปรแกรมแก้ไขกราฟิกและ API นั้นง่ายต่อการรับกับแอพพลิเคชันตัวอย่างจำนวนมาก

หากคุณต้องการระดับต่ำมากขึ้นเมื่อคุณรู้วิธีของคุณรอบ linux ในบรรทัดคำสั่งรู้วิธีการสำรวจไดเรกทอรีจัดการไฟล์เข้าใจสิทธิ์ ฯลฯ จากนั้นเริ่มอ่านวิธีรวบรวมโปรแกรมอย่างง่ายด้วย gcc วิธีเชื่อมโยงไฟล์และเรียกใช้ไฟล์ปฏิบัติการและวิธีแก้ปัญหาด้วย gdb

อีกวิธีหนึ่งถ้ามันดูค่อนข้างยุ่งยากคุณสามารถดาวน์โหลด Eclipse หรือ IDE อื่น ๆ แต่คุณอาจจะรู้สึกสบายใจกับ Linux ในระยะยาวถ้าคุณใส่เวลาและความพยายามลงในบรรทัดคำสั่งก่อน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.