การเรียนรู้ C # เป็นภาษาแรกผิดหรือเปล่า? [ปิด]


26

ฉันรู้ว่ามีคำถามที่คล้ายกันที่นี่ซึ่งฉันได้อ่าน แต่ฉันเพิ่งอ่านโพสต์นี้โดย Joel Spolsky:

ฉันจะสอนคนที่ฉลาดได้อย่างไรโดยไม่มีประสบการณ์การเขียนโปรแกรมวิธีการเขียนโปรแกรม

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

ฉันเขียนด้วยภาษาต่าง ๆ แต่ภาษา C # เป็นภาษาที่จริงจังชิ้นแรกของฉันฉันได้อ่าน "Head First C #" และสร้างโปรเจ็กต์ไม่กี่ แต่หลังจากอ่านโพสต์ด้านบนฉันพบว่ามันน่าผิดหวังเล็กน้อยที่ฉันอาจจะทำทุกอย่างผิดปกติเห็นได้ชัดว่าฉันเคารพความคิดเห็นของโจเอลซึ่งเป็นสิ่งที่ทำให้ฉันเล็กน้อย

ฉันเริ่มอ่าน "รหัส" ตามที่แนะนำในรายการเรื่องรออ่านและฉันพบว่ามันค่อนข้างยาก แต่สนุก ฉันรู้สึกเหมือนว่ามันถูกขัดออกจาก "การแฮ็คที่ไม่เกี่ยวกับ" ใน Visual Studio

ดังนั้นตอนนี้ฉันไม่แน่ใจว่าฉันควรใช้เส้นทางไหน? ฉันควรถอยหลังและทำตามคำแนะนำของโจเอลและเริ่มอ่าน?

ฉันเดาว่าเป้าหมายหลักของฉันคือการเป็นโปรแกรมเมอร์ที่ดีเหมือนคนอื่น ๆ แต่ฉันไม่ต้องการที่จะฝึกฝนโดยการเรียนรู้ภาษา. NET เมื่อคนที่คิดว่าฉันนับถือคิดว่ามันเป็นอันตราย

คิด?


4
การเรียนรู้ CS วิธีที่ยากสามารถทำได้ แต่เฉพาะในกรณีที่คุณมีครูที่ดี
งาน

5
C # ไม่ใช่ภาษาแรกของฉัน VB.net คือและฉันสามารถบอกคุณได้ว่าไม่ใช่ว่าคุณจะเริ่มต้นสิ่งนั้นอย่างไร ฉันคิดว่า C # จะเป็นภาษาเริ่มต้นที่ดีเพียงอย่าลืมถามตัวเองเสมอว่าทำไมสิ่งต่าง ๆ ถึงเกิดขึ้นในแบบที่พวกเขาเป็น
Daniel Little

23
ไม่ภาษาใด ๆ ในฐานะภาษาแรกนั้นดีที่จะเรียนรู้ทฤษฎีวิทยาศาสตร์คอมพิวเตอร์ ได้รับเพื่อให้ประกอบอาชีพของมันบางภาษาดีกว่าคนอื่น ๆ แต่เพื่อวัตถุประสงค์ในการเรียนรู้สิ่งที่ดี โปรแกรมเมอร์ที่ดีที่สุดที่ฉันรู้จักเริ่มต้นด้วย BASIC ใน C64, Apple II หรือ TI-99 / 4A มันไม่ได้หมุนสมองของพวกเขา แต่กระตุ้นพวกเขาให้เป็นภาษาถัดไปและต่อไป
Jesse C. Slicer

5
นอกจากนี้ยังขึ้นอยู่กับว่าคุณวางแผนจะทำอะไรกับความรู้นั้น C # แก้ปัญหาทางธุรกิจในแต่ละวันที่ฉันทำงาน ฉันไม่ได้มองที่ C โดยมีพรมแดนติดกันเป็นเวลาสองทศวรรษและฉันรู้สึกลำบากเมื่อฉันต้องทำ
Jesse C. Slicer

19
การเรียนรู้บางสิ่งจะไม่ ผิดพลาด มันก็มักจะดีกว่าไม่ได้เรียนรู้
SK-logic

คำตอบ:


80

ฉันตบเบา ๆ ด้วยภาษาต่าง ๆ แต่ C # เป็นภาษาที่จริงจังชิ้นแรกของฉันฉันอ่าน "Head First C #" และสร้างโครงการไม่กี่ แต่หลังจากอ่านโพสต์ด้านบนฉันพบว่ามันน่าผิดหวังเล็กน้อยที่ฉันอาจจะทำทุกอย่างผิดปกติเห็นได้ชัดว่าฉันเคารพความคิดเห็นของโจเอลซึ่งเป็นสิ่งที่ทำให้ฉันเล็กน้อย

ผมเคารพในความคิดเห็นของโจเอลเกินไป แต่พวกเขาเป็นเพียงที่: ความคิดเห็น การใช้ C # เป็นภาษาเริ่มต้นไม่มีอะไรผิดปกติอย่างแน่นอน

คำแนะนำที่ใหญ่ที่สุดที่ฉันสามารถให้คุณหรือใครก็ตามที่ทำใด ๆการเขียนโปรแกรม (แม้ว่าพวกเขาจะเริ่มต้นในวานิลลา C) คือการจะไม่นิ่งและไม่ต้องศาสนา ฉันไม่สนใจสิ่งที่ภาษาการเขียนโปรแกรมที่คุณกำลังเริ่มต้นด้วยหรือวิธีการที่บริสุทธิ์หรือความชอบธรรมว่าภาษาคือ - ในวันนี้และอายุคุณไม่สามารถที่จะนั่งอยู่ในโลกเพียงหนึ่งเดียวของการเขียนโปรแกรม

ตัวอย่างเช่นฉันเริ่มเขียนโปรแกรมด้วย PHP3 ย้อนกลับไปตอนที่ฉันยังเป็นเด็ก ฉันสร้างแอปพลิเคชั่นเว็บเล็ก ๆ และเว็บไซต์ขึ้นมาเล็กน้อย ฉันคิดว่าฉันเป็นโปรแกรมเมอร์อัจฉริยะและฉันสามารถทำอะไรกับ PHP3 และขมวดคิ้วกับคนที่เกี่ยวกับ ASP หรือพื้นฐาน ฉันเป็นคนผิด

ฉันไม่ได้เริ่มเบ่งบานอย่างแท้จริงในฐานะนักพัฒนาจนกระทั่งฉันเริ่มขยายขอบเขตและเรียนรู้ภาษาและแนวคิดการเขียนโปรแกรมอื่น ๆ ในช่วงมัธยมฉันได้เรียนรู้ RealBASIC บางส่วนและต่อมา Visual Basic หลังจากโรงเรียนธุรกิจเมื่อฉันเป็นนักพัฒนามืออาชีพฉันเริ่มเรียนรู้ C # และ Javascript อย่างจริงจัง

ตอนนี้อย่าเข้าใจฉันผิดที่นี่ - ฉันไม่ได้สนับสนุนให้คุณพยายามเป็น Jack of All Trades ที่สำคัญและในทางการค้าฉันยังเป็นโปรแกรมเมอร์ PHP อยู่ PHP เป็นขนมปังและเนยของฉันและฉันรู้ว่าข้างในและนอก อย่างไรก็ตามทักษะ PHP ของฉันไม่ได้กลายเป็นสิ่งที่พวกเขาทำเพียงแค่ PHP ต่อไปนี้เป็นแนวคิดที่สำคัญอย่างยิ่งที่ฉันไม่เข้าใจจาก PHP แม้จะทำงานอย่างมืออาชีพก็ตาม

  • Javascript: การปิด
  • jQuery (ใช่แยกต่างหาก): DOM และ Ajax
  • Visual Basic: การเขียนโปรแกรมเชิงวัตถุ
  • C #: ยาสามัญและการปิด
  • Ruby (บนราง): พลังของการออกแบบ MVC

ฉันสามารถไปและอื่น ๆ อีกมากมายบนเว็บไซต์นี้เช่นกันสำหรับวัน แม้ว่าฉันเป็นโปรแกรมเมอร์ PHP แต่ฉันก็สามารถนำแนวคิดที่ยอดเยี่ยมอื่น ๆ เหล่านี้กลับมากับฉันในงานที่ฉันทำทุกวัน

ประเด็นของฉันคืออะไร เรียนรู้ C # เป็นผู้ชำนาญการ C # - คุณจะมีอาชีพที่ยาวนานและประสบความสำเร็จและคุณอาจประสบความสำเร็จในสิ่งที่น่าอัศจรรย์ แต่ไม่ควรทำตัวเป็นนกพิราบ การเดินทางและลิ้มรสภาษาและสภาพแวดล้อมและแนวคิดอื่น ๆ


+1: @toleero - C # หรือ Java นั้นดีพอที่จะเริ่มเรียนรู้ โจเอลและพอลเกรแฮมเอาชนะค่าเฉลี่ยกำลังพยายามข้ามจุดของนักพัฒนาที่ซบเซาด้วยภาษาที่พวกเขาเลือกเพราะชี้ให้เห็นว่าสิ่งนี้เป็นเรื่องธรรมดาเกินไป
Justin Shield

Objective-C ยังสอน MVC อยู่ดี แต่ก็ไม่ค่อยมีการใช้งาน
Moshe

4
+1 ในความคิดของฉันคุณไม่สามารถเป็นนักพัฒนาที่ยอดเยี่ยมและเป็นผู้เชี่ยวชาญในภาษาหลักของคุณได้โดยไม่ต้องเรียนรู้และเล่นกับภาษาอื่น นั่นเป็นวิธีที่ดีที่สุดในการเพิ่มพูนความรู้ของคุณและชื่นชมความแข็งแกร่งของภาษาหลักของคุณอย่างแท้จริง
Niklas H

3
+1 กุญแจที่นำออกไปจากสิ่งนี้คือคำที่เขาเลือกที่จะเป็นตัวหนา มันง่ายเกินไปที่จะเรียนรู้อะไรบางอย่างเช่น Java และ C # หรือแม้แต่ C และใช้เวลา 10 ปีในการเขียนโค้ดในแบบที่คุณมีอยู่เสมอ ผลักดันตัวเองเรียนรู้ภาษาใหม่ทุกปี ตั้งคำถามกับสิ่งที่คุณทำลองหาวิธีที่ดีกว่า และที่สำคัญที่สุดจงมีส่วนร่วมกับโปรแกรมเมอร์และ StackOverflow
Andrew T Finnell

คุณสามารถทำตัวอย่างเหล่านี้ทั้งหมดใน C # Dom / ajax: C # xml & ajax libraries วัตถุที่มุ่งเน้น? ตรวจสอบ MVC? Asp.net mvc framework
Carra

21

เมื่อใครบางคนที่แสดงความคิดเห็นฉันเคารพคิดว่ามันเป็นอันตราย

สิ่งนี้ทำให้ฉันนึกถึงเรื่องราวที่เกี่ยวข้องกับ Richard Feynman นักเรียนที่คาลเทคถามจักรวาลที่มีชื่อเสียงของไมเคิลเทอร์เนออะไร "อคติ" ของเขาอยู่ในความนิยมชนิดของอนุภาคในฐานะผู้สมัครประกอบด้วยสสารมืดและหลักการ snapped และพูดว่า "ทำไมคุณต้องการที่จะรู้ว่าเขามีอคติ? รูปแบบของคุณเอง! ... อย่าใส่ใจกับเจ้าหน้าที่คิดด้วยตัวเอง "

โปรแกรมเมอร์มาจากทุกสาขาอาชีพ Java ได้รับการสอนในโรงเรียนมัธยมและวิทยาลัยหลายแห่งในทุกวันนี้ แต่มันไม่ได้ถูกคิดค้นเมื่อ Joel Spolsky อยู่ในโรงเรียน ไม่มี "หนึ่งเส้นทางที่แท้จริง" เมื่อพูดถึงการเป็นโปรแกรมเมอร์ที่ดี แน่นอนว่ามีบางคลาสสิกเช่น SICP ที่โปรแกรมเมอร์ส่วนใหญ่สะดุดในบางจุด แต่ไม่มีมาตรฐานที่ยากและรวดเร็ว สิ่งสำคัญคือการเริ่มต้นที่ไหนสักแห่งและมุ่งเน้นไปที่แนวคิดการสร้าง โปรแกรมเมอร์ที่ยอดเยี่ยมเคยพูดบางสิ่งเช่น:

โปรแกรมเมอร์ไม่ดีมุ่งเน้นไปที่รหัสโปรแกรมเมอร์ที่ดีมุ่งเน้นไปที่อัลกอริทึม

ฉันคิดว่า C # เป็นภาษาที่ดีที่จะเริ่มต้นด้วย แต่ฉันเตือนคุณให้ระวัง Visual Studio มันเป็น IDE อย่างมาก แต่ถ้าคุณลากDropDownListและผูกGridViewกับObjectDataSourceและใช้Buttonการควบคุมเพื่อให้DropDownListการค้นหาตามแล้วส่วนของงานที่จะทำโดย IDE และคุณไม่ได้เขียนโปรแกรมจริงๆ ใช้ประโยชน์จากเครื่องมือ IDEs แต่พยายามสร้างแนวคิดและพัฒนาความรู้อยู่เสมอ


คำตอบที่ยอดเยี่ยม
Yasir

3
ก่อนอื่นคุณพูดว่า "โปรแกรมเมอร์ที่ดีมุ่งเน้นไปที่อัลกอริทึม" จากนั้นคุณพูดว่า "งานนั้นทำโดย IDE และคุณไม่ได้เขียนโปรแกรมจริงๆ" มันคืออะไร ฉันสามารถเขียนโปรแกรมทำขั้นตอนการทำงานได้อย่างถูกต้องและไม่สนใจ "รายละเอียดการใช้งาน" เช่น GridView และ DropDown (สมมติว่าฉันรู้พอที่จะเลือกสิ่งที่ถูกต้องและวิธีการนำไปใช้อย่างถูกต้อง) +1 สำหรับคำถามที่เหลือ แต่การใช้ IDE ไม่ได้ขัดขวางคุณจากการเป็นโปรแกรมเมอร์ที่ดี
WernerCD

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

2
@ Graham - ขออภัย แต่ฉันไม่เห็นด้วย เขาไม่ได้พยายามเรียนรู้ด้านไอทีหรือการพัฒนาซอฟต์แวร์ - เขาพยายามเรียนรู้การเขียนโปรแกรม เครื่องมือของ IDE คือในมุมมองของฉันสิ่งที่ดีที่สุดที่เหลือในภายหลังหลังจากที่คุณเป็นโปรแกรมเมอร์ที่เก่ง
BlackJack

16
ที่สำคัญคือเป็นนักพัฒนาที่ดีไม่เชื่อในความมหัศจรรย์ งานที่ทำโดย IDE (หรือเครื่องมืออื่น ๆ ) เป็นความสะดวกสบายทางลัด แต่ไม่เปลี่ยนสำหรับความเข้าใจ
Bevan

7

ฉันเป็นแค่ผู้อยู่ใต้บังคับบัญชา แต่ด้วยความอ่อนน้อมถ่อมตนและความเคารพต่อผู้ที่มีประสบการณ์มากกว่านี้ฉันต้องยอมรับว่าฉันไม่ได้รับทัศนคติเช่นนี้

หนึ่งโปรแกรมเมอร์แสดงความคิดเห็นด้านล่างคำตอบของโจเอล " เป็นคนที่ได้มีการปังหัวของเขาบนโต๊ะทำงานในช่วง 'โปรแกรมเมอร์' ใครมาขอแนะนำสำหรับความสามารถของตน C # แต่ไม่สามารถทำสิ่งที่ง่ายเช่นใช้ชั้นฐานเอกสารที่ดีมาก, พบ หน่วยความจำรั่วในโปรแกรม c และ c ++ " ...

แต่ทำไมต้องค้นหาการรั่วไหลของหน่วยความจำในแอป C ++ นั้นง่ายสำหรับคนที่ไม่เคยอ้างว่ารู้จัก C ++ :) ฉันไม่เข้าใจ มันเหมือนกับการวิจารณ์นักจิตวิทยาเนื่องจากขาดทักษะทันตแพทย์ ฉันก็ไม่ได้เป็นโปรแกรมเมอร์ดี แต่ผมรู้สึกว่านี่เป็นไม่ได้เพราะผมไม่ทราบว่า c ++ - มันเป็นเพราะผมไม่ทราบว่าดีพอที่กรอบและภาษาที่ฉันกำลังใช้

"ไม่สามารถทำสิ่งที่ง่าย ๆ เช่นใช้คลาสฐานที่มีเอกสารที่ดีมาก (... ) หรือเพียงแค่หาปัญหาด้วยตัวเองหรือเรียนรู้แนวคิดใหม่แม้กระทั่งในระดับปานกลาง"

ตกลง แต่ - ความสัมพันธ์ไม่ได้หมายถึงสาเหตุและสิ่งที่ทำให้เราคิดว่าพวกเขาขาดทักษะการเขียนโปรแกรมทั่วไป - ซึ่งฉันไม่สงสัย - เป็นผลมาจากการเลือกภาษาของพวกเขา?

หรือผลของการใช้ภาษา C # เป็นภาษาแรกที่พวกเขาเลือกสำหรับเรื่องนั้น?

ฉันสามารถดูคำอธิบายที่เป็นไปได้อื่น ๆ (อาจ C # เป็นเพียงอินเทรนด์และด้วยเหตุนี้มันจะดึงดูดมากของสามเณร ... คนส่วนใหญ่สำหรับผู้ที่ C # เป็นภาษาแรกที่ยังไม่ได้รับการเขียนโปรแกรมนานมากที่ทุกคนและที่มีมากขึ้นของแต้มต่อใน สิทธิของตัวเองมากกว่าไม่เคยเขียนโปรแกรมในภาษาอื่น ๆ ... ฯลฯ ฯลฯ )


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

1
ฉันเห็นประเด็นของคุณ ฉันรู้พื้นฐานมากของชีวิตตัวแปร (เพียงเกี่ยวกับเท่าที่ฉันอาจต้องใน C # ในชีวิตประจำวัน: ขอบเขตusing, IDisposableตัวจัดการเหตุการณ์อ้างอิงฟังของพวกเขา ฯลฯ ) แต่ฉันจะไม่ได้อย่างจริงจังพยายามที่จะวินิจฉัยหน่วยความจำ รั่วในแอปพลิเคชัน C ++ เพราะฉันไม่คุ้นเคยกับไวยากรณ์! ฉันไม่รู้ว่าดอกจันหมายถึงอะไร
Konrad Morawski

5

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

ใน. NET มันง่ายสำหรับคุณที่จะใช้ภาษาการเขียนโปรแกรมที่แตกต่างกันสองภาษา( เรียงลำดับ ) เนื่องจากคุณสามารถสลับระหว่าง Visual Basic และ C # ได้ ดังนั้นคุณสามารถเรียนรู้ Visual Basic และดูความแตกต่าง ในระดับนี้คุณควรมีความเชี่ยวชาญในการเขียนโปรแกรมขั้นตอนพื้นฐานด้วยโครงสร้างการเขียนโปรแกรมพื้นฐานสามแบบหากคุณสามารถสร้างสรรค์สิ่งเหล่านี้ได้ทั้งหมด (และรู้วิธีการใช้ตัวแปร) จากนั้นคุณก็พร้อมที่จะเป็นโปรแกรมเมอร์ที่ยอดเยี่ยม:

  • ลำดับ - รหัสถูกเขียนตามลำดับขั้นตอนที่ตามมาในลักษณะที่คุณระบุ (กำหนด "กระโดด" ทีละขั้นตอนและ gotos)
  • เงื่อนไข - รหัสสามารถมีคะแนนการตัดสินใจ (กำหนด if-statements, statement-case switch)
  • การวนซ้ำ / การทำซ้ำ - รหัสสามารถทำซ้ำตัวเองได้เนื่องจากการตัดสินใจบางอย่าง (ซึ่งเป็นส่วนขยายของทั้งสองข้างต้นกำหนด for-, do-while-loops)

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

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

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

ยังรู้อีกว่ายังมีอีกเหตุผลที่ดีว่าทำไมคุณควรเรียนรู้ภาษาโปรแกรมอื่น ๆ นอกเหนือจากภาษาหลักที่คุณจะใช้มากที่สุด: โอกาสในการจ้างงานของคุณนั้นยิ่งใหญ่กว่ามาก


5

จุดเน้นของคำถามและคำตอบมากมายที่นี่อยู่ใน C # จากวิกิพีเดีย :

ภาษา C # มีวัตถุประสงค์เพื่อให้ง่ายในการเขียนโปรแกรมภาษาเชิงวัตถุ

ดูเหมือนว่าจะปลอดภัยที่จะบอกว่าคุณสามารถเรียนรู้ภาษา C # เป็นภาษาแรกโดยไม่ทำลายสมองของคุณในระยะยาว ฉันไม่คิดว่า Joel ประณามทั้งภาษา แต่เมื่อเขาเขียนว่า :

ความพยายามในการใช้ทางลัดและไปที่การเรียนรู้สิ่งที่คุณต้องการเรียนรู้โดยตรงในขณะนี้ (เช่นเริ่มต้นด้วย C # และ ASP.NET) ถึงวาระแล้ว

ปัญหาไม่ใช่ภาษามันใช้ทางลัด บ่อยครั้งที่ผู้คนพยายามใช้เส้นทางที่รวดเร็วไปยังเป้าหมายสุดท้ายโดยทำตามบทช่วยสอนทีละขั้นตอนหรือ "เรียนรู้ทุกอย่างใน 24 ชั่วโมง" คุณไม่ต้องใช้เวลากับ Stack Overflow มากเกินไปก่อนที่จะเริ่มสังเกตเห็นว่ามีคำถามมากมายตามแนวของ: "ฉันไม่เคยเขียนรหัสบรรทัดในชีวิตของฉัน แต่ฉันเข้าสู่ iPhone การเขียนโปรแกรม! ใครช่วยกรุณาให้คำแนะนำทีละขั้นตอนสำหรับการทำสิ่งที่ฉันต้องการจะทำอย่างไรขอบคุณ! " ฉันไม่ได้บอกว่าคุณกำลังเข้าใกล้ แต่ก็เป็นสิ่งที่คุณต้องป้องกัน

หากคุณต้องการพัฒนาทักษะการเขียนโปรแกรมที่มั่นคงคุณควรเริ่มต้นด้วยการเรียนรู้ทักษะพื้นฐาน หากคุณพยายามที่จะข้ามไปยังแอปพลิเคชัน OOP และ GUI และคุณอาจพลาดพื้นฐานเหล่านั้นไป หนังสือที่โจเอลชี้ให้เห็นนั้นดีมากแน่นอน ฉันอ่านผ่านC # Yellow Book (PDF) เท่านั้น แต่ดูเหมือนว่ามันอาจเป็นการแนะนำการเขียนโปรแกรมที่ดีกว่าหนังสือ C # ส่วนใหญ่ที่ฉันเห็นในร้านค้า


ฉันต้องการชี้ให้เห็นว่าการใช้ถ้อยคำไม่ใช่ "ไม่เรียนรู้ C #" มันคือ "C # และ ASP.NET" (เน้นการเน้น) ฉันไม่ใช่โปรแกรมเมอร์ C # แต่. NET และ CLR เป็นแพลตฟอร์มที่ดีในการเริ่มเรียนรู้
forivall

5

สำหรับฉันแล้วสิ่งที่อยู่ในบทความอื่นนั้นได้ตีเล็กน้อยว่าเป็นคนชั้นเลิศ ใช่ฉันมักจะแนะนำSICPให้กับนักพัฒนาที่จริงจังที่ต้องการพัฒนาให้ดีขึ้น แต่สำหรับผู้ที่ต้องการก้าวข้าม "บรรทัดฐาน" และเรียนรู้เวทย์มนตร์ลึก แน่นอนสำหรับปีSICPเป็นข้อความการเขียนโปรแกรม MIT น้องใหม่มาตรฐาน แต่โปรแกรมเมอร์ที่ทำงานอย่างหนักจำนวนมากไม่เคยมีโอกาสเข้าร่วมสถาบันที่ดี แต่มีราคาแพงและเลือกสรรมาอย่างดี

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

หากคุณมีการติดตั้ง C # ด้วยฉันสามารถบอกคุณได้ว่ามันเป็นภาษาที่ดีมากสำหรับการทำงานแบบแข็งเช่นฉัน - เช่น Java, JavaScript, Python, Ruby, Scala, Scheme และภาษาอื่น ๆ อีกมากมายที่ฉันมี เรียนรู้ในช่วงหลายปี ในที่สุดฉันพยายามเลือกภาษาและเครื่องมือที่เหมาะสมสำหรับงานเฉพาะที่อยู่ในมือและนั่นหมายถึงการเปลี่ยนภาษาเช่นหมวก

ไม่มีอะไรผิดปกติกับการใช้วิธีสนุก ๆ ในการเรียนรู้เช่นการเข้าใกล้รูบี้ผ่านWhy's Poignant Guide and Shoes (เหมือนที่ฉันแนะนำในโพสต์ล่าสุด ) มีความลับและลึกลับเส้นทางเช่นการต่อสู้กับหัวของคุณมีเล็ก ๆ น้อย ๆ อุบายและเก๋าอุบายในทางของการSICP นักคิดสมัยใหม่หลายคนจะให้คุณข้ามสิ่งที่เก่ากว่าวิชาการและ "enterprisey" และดำน้ำโดยตรงใน JavaScript, JQuery และ HTML5 แทน มีหลายวิธีในการเริ่มต้นดังนั้นอย่าเสียเวลามากเกินไป เพียงแค่เลือกหนึ่งและรับการเข้ารหัส!

ในความเป็นจริงฉันเชื่อว่ามืออาชีพที่ใช้งานไม่กี่วันนี้จะส่งคุณย้อนกลับไปเพื่อเรียนรู้ Assembler หรือ C / C ++ ก่อน ตรงไปตรงมาถ้าพวกเขาทำฉันไม่เชื่อว่าพวกเขาจะทำคุณบริการมาก

ดังนั้นเพื่อประดับประดา "เริ่มต้นด้วยสิ่งที่คุณมี" ฉันมีคำแนะนำอีกสามบิต:

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

ฉันเริ่มด้วย FORTRAN IV และ QBASIC และถ้าสิ่งนั้นไม่ทำลายฉัน C # จะไม่ทำร้ายคุณเช่นกัน! ขอให้โชคดีและให้แน่ใจว่าคุณกำลังสนุกในขณะที่เรียนรู้!


คุณสามารถค้นหาการบรรยายดั้งเดิมโดย Abelson & Sussman ได้ที่นี่: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

ฉันคิดว่าคำแนะนำที่ดีที่สุดที่ฉันเคยเห็นเมื่อพูดถึงคนที่ถามว่า "ฉันควรเรียนภาษาอะไรดี" เป็นเพียง: โปรแกรมเมอร์ที่ดีสามารถทำงานในภาษาใดก็ได้

มีข้อโต้แย้งกับคำว่าฉันแน่ใจ แต่ประเด็นคือ: เรียนรู้ที่จะเป็นโปรแกรมเมอร์ที่ดีแทนที่จะเป็นผู้เชี่ยวชาญด้านภาษาก่อน ผู้สร้างไม่ชำนาญในการสร้างบนที่ดินหนึ่งแปลงพวกเขาเรียนรู้ทักษะการค้าขายของพวกเขาและนำไปใช้กับที่ดินที่ต้องการ


ฉันจะ +1 สิ่งนั้น มันคล้ายกับการเปรียบเทียบของฉันในการสร้างรถจักรยานยนต์ คุณสามารถสร้างรถจักรยานยนต์ที่ดีโดยการทำงานในสายการประกอบและทำตามหนังสือ แต่จริงๆน่ากลัวผู้สร้างสับที่รู้กล้าของจักรยานทั้งในและนอกและเป็นผลให้คุณได้รับสิ่งที่น่าอัศจรรย์บางอย่าง
Jarrod Nettles

3

บางครั้งฉันสงสัยว่าภาษาที่เลือกมีส่วนเกี่ยวข้องกับบุคลิกภาพของเราได้มากขึ้นและพวกเขามีวิธีที่เราเชื่อมต่อและมีส่วนร่วมน้อยกว่าในการพิจารณาในเชิงปฏิบัติหรือเชิงวิชาการมากกว่าที่เรายอมรับ

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

อย่างน้อยยุ่งกับ Python และ JavaScript มันเป็นข้อได้เปรียบในการเรียนรู้อย่างชัดเจนที่จะสามารถเขียนโค้ดและดูมันทำงานได้ทันทีในสภาพแวดล้อมคอนโซลที่สามารถเข้าถึงไฟล์ I / O เช่น IDLE หรือสภาพแวดล้อม sandbox เช่นเบราว์เซอร์ สิ่งที่ฉันไม่ชอบเกี่ยวกับ C # และ Java ก็คือพวกเขาต้องการให้ทุกสิ่งถูก จำกัด อยู่ในชั้นเรียนแม้ว่าคุณเพียงแค่เขียนฟังก์ชั่นที่เรียบง่ายด้วยการห่อหุ้มรอบ ๆ เพื่อให้เพื่อนของคุณหรือคอมไพเลอร์ที่ จำกัด มากเกินไปมีความสุข อีกอย่างที่ฉันชอบเกี่ยวกับ JS และ Python ก็คือพวกเขาให้คุณกำหนดกระบวนทัศน์ของคุณเอง มีความยืดหยุ่นน้อยเกินไปตามความต้องการของนักพัฒนาซอฟต์แวร์จำนวนมาก ฉันยังไม่แน่ใจว่าต้องคิดอย่างไรเกี่ยวกับภูมิปัญญาของการใช้งานตัวดำเนินการพื้นฐานมากเกินไป แต่ฉันค่อนข้างแน่ใจว่าฉันชอบ Python ที่ให้ตัวเลือกนี้

และอย่าตกหลุมรักการเลือกภาษาหลักที่มีรายชื่องานมากที่สุด มันจะดีกว่าถ้าคุณเป็นปลาตัวใหญ่ ๆ ในน่านน้ำกลางที่ทำในสิ่งที่คุณต้องการมากกว่าสมาชิกของฝูงปลาที่มีความเส็งเคร็งส่วนใหญ่ที่ทำให้การหางานทุกครั้งเป็นการจับสลากมากกว่ากระบวนการจับคู่


ในฐานะคนที่ได้รับการว่าจ้างจากฝูงปลาที่ทนไม่ได้ในงานประจำวันของฉันฉันต้องยอมรับ มีข้อเสนอแนะที่เป็นประโยชน์มากมายในการสนทนานี้ ฉันหวังว่า @toleero จะพบว่ามีประโยชน์และไม่ลดทอนลง ถึงใจของฉันในขณะที่โจเอลเป็นอัจฉริยะเราไม่ควรยอมรับทุกสิ่งที่มีคนพูดว่าเป็นพระกิตติคุณ หนังสือที่เขาแนะนำมีประโยชน์ แต่เป็นรหัสในแต่ละวันและได้รับประสบการณ์ในทางปฏิบัติ ทำสิ่งนั้นในภาษาต่างๆ (พูด C # และบางอย่างที่น้อยกว่า C-like - Basic, บางที, หรือ Python หรือ Ruby) และคุณจะกลายเป็นนักพัฒนาที่ดีเช่นเดียวกับหลาย ๆ คน: o)
Owen Blacker

3

C # ไม่เลวเท่าชวา พวกเขาได้รับการสนับสนุนที่ดีกว่าสำหรับแนวคิดต่าง ๆ เช่นการเขียนโปรแกรมใช้งาน, การเขียนโปรแกรมทั่วไป, การทำลายแบบกำหนดค่าและประเภทของค่า, การใช้งานเกินพิกัด, ฯลฯ การสนับสนุนคุณสมบัติเหล่านี้ยังคงสามารถใช้งานได้มากมาย มันไม่ใช่ C ++

ประการที่สองฉันคิดว่าคุณกำลังอ่านสิ่งที่โจเอลพูดผิด หากคุณสามารถควบคุมตัวชี้และการเรียกซ้ำได้ไม่ว่าคุณจะใช้ภาษาใดในขณะนี้ สิ่งที่สำคัญที่สุดคือการใช้unsafeรหัสเล็กน้อยจับกับunsafe quicksortหรืออะไรสักอย่างแล้วกลับไปที่ C # ปกติ

โอ้และอ่าน :)


2

ภาษาแรกที่ได้ผลสำหรับฉันคือ C # แม้ว่าฉันจะเล่นซอฟท์แวร์กับ Foxpro ในช่วงเวลาเรียนและอยู่ที่วิทยาลัยเล็กน้อย C # ค่อนข้างดีและเป็นจุดเริ่มต้นที่ดีมากสำหรับทุกคน มันเป็นไปตามพื้นฐานทั่วไปของการเขียนโปรแกรมเช่นการพิมพ์ที่แข็งแกร่งการห่อหุ้มการสืบทอด ฯลฯ ซึ่งฉันเชื่อว่าควรเรียนรู้เสมอไม่ว่าพวกเขาจะใช้มันหรือไม่ก็ตาม ต่อมาคุณสามารถย้ายไปใช้ภาษาอื่นเช่น Python ซึ่งไม่เป็นไปตามมาตรฐานของการเขียนโปรแกรมพื้นฐาน

ปัจจัยเพิ่มอื่น ๆ ที่ผู้คนไม่ได้เพิ่มในด้านการเรียนรู้ของ C # คือความพร้อมใช้งานของ IDE ที่ดีที่สุดสำหรับภาษาใด ๆ ที่ฉันได้เห็น Eclipse IDE ก็ดีเหมือนกัน แต่เมื่อคุณใช้ Visual Studio คุณจะขอบคุณ microsoft

การพัฒนา C # ผ่าน C ทำให้มั่นใจได้ว่าคุณไม่จำเป็นต้องเรียนรู้ภาษาอื่นล่วงหน้า ทุกภาษาในช่วงทศวรรษที่ผ่านมานั้นมีวิวัฒนาการมาจากธรรมชาติของ C หรือแม้แต่ภาษาจาวา

ดังนั้นคำตัดสินคือC # เป็นจุดเริ่มต้นที่ดีที่ทำให้คุณสามารถเรียนรู้ภาษาอื่น ๆ ได้อย่างรวดเร็วในอนาคต


Eclipse ดีกว่าสำหรับฉันมากกว่า Visual Studio แต่ผมเห็นด้วยกับคุณ - C # จะเป็นภาษาที่ดีโดยเฉพาะอย่างยิ่งถ้ามันไม่ได้เป็นเจ้าของและล็อคในนริศมืดชั่วร้ายที่เป็นกรรมสิทธิ์ของมาตรฐานการทำลายของเรดมอนด์
โทมัส W

2

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


1

เท่าที่ฉันแนะนำให้คุณเรียนรู้หลายภาษา (เช่นเดียวกับคนอื่น ๆ แนะนำ) ตรวจสอบให้แน่ใจว่าคุณรู้ภาษา (สอง) คุณเรียนรู้ได้ดีมาก

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

การรู้ถึงโครงสร้างของ for-loop นั้นเป็นเรื่องที่สนุกมาก แต่ก็ไร้ประโยชน์หากคุณไม่รู้วิธีจัดการกับข้อผิดพลาดในภาษาเหล่านั้น


1

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

มีกฎตายตัวเนื่องจากมีโปรแกรมเมอร์ภาษาที่ได้รับการจัดการซึ่งไม่เคยทำส่วนที่สองนั้นและเรียนรู้ C และ C ++ จากนั้นจึงนำไปใช้กับงาน C และ C ++

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


1

มันยากสำหรับมือใหม่โดยไม่ต้องสงสัย ฉันได้ทำ vb, javascript, PL / SQL, T-SQL, Uniface และ C # มานิดหน่อยแล้ว

ก่อนหน้านี้มีคนพูดถึง Visual Basic ว่าพวกเขาเรียนรู้เกี่ยวกับการเขียนโปรแกรมเชิงวัตถุอย่างไรและด้วยความซื่อสัตย์ VB.NET มีไวยากรณ์ที่เข้าใจง่ายที่สุดของภาษาใด ๆ ที่ฉันเคยเห็นมา คุณลักษณะที่ดีที่สุดคือคำหลักนั้นตรงกับแนวคิดที่อธิบายอย่างใกล้ชิด

เช่น Function myHandler () จัดการ myButton.click

หรือ Class Human Extends การเลี้ยงลูกด้วยนมเสริมอัจฉริยะ

อย่างจริงจังเพื่อให้สามารถอ่านได้เมื่อคุณเป็นสามเณรคุณต้องการให้ไวยากรณ์มีลักษณะเป็นอย่างไร

เมื่อคุณกำลังมองหาคุณสมบัติและวิธีการ (และการบิดเบือนระหว่างหมวดย่อยและฟังก์ชั่น) มันง่ายมากที่จะอ่านใน VB

ในทำนองเดียวกันเมื่อประกาศตัวแปร

Dim myString As string - ชัดเจนซึ่งเป็นประเภทและซึ่งเป็นตัวอย่าง

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

เช่น

มนุษย์มนุษย์

  • มีคำไม่กี่คำในชุดคำศัพท์ของคุณที่คุณต้องใช้ซ้ำกับตัวพิมพ์ใหญ่?

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

C # อาจมีข้อได้เปรียบ แต่มันเริ่มยากกว่ามากแม้ว่ามันจะประหยัดการพิมพ์ นี่คือเหตุผลว่าทำไมจึงควรมีที่สำหรับทั้งสองภาษา


+1 สำหรับมนุษย์มนุษย์ การมีภาษา c # เป็นภาษาที่สอง (bread and butter = Delphi) ผ่านหนังสือแทนที่จะมีประสบการณ์เชิงลึกเกี่ยวกับรหัสที่มีอยู่มันทำให้สมองของฉันปวดเมื่อยเล็กน้อยเมื่อเห็นสิ่งนี้ แม้ว่าจะมีบางส่วนของภาษาที่ฉันชอบจริง ๆ การลากไปตามความรู้สึกของตัวอักษรจาก C เป็นความผิดพลาดครั้งใหญ่
Matt Allwood

แน่นอนเพราะDim myHuman as Humanจะดีกว่ามาก? : D
scrwtp

0

ข้อเสียที่ใหญ่ที่สุดที่ฉันเห็นก็คือ Visual Studio และเครื่องมือที่เกี่ยวข้องนั้นยอดเยี่ยมมาก - สิ่งต่าง ๆ เช่นการใช้ระบบ Intellisense และการเติมโค้ดให้สมบูรณ์สามารถกลายเป็นไม้ค้ำได้อย่างง่ายดาย ฉันมักจะยืนยันว่าสภาพแวดล้อมนั้นดีและให้การสนับสนุนที่คุณมักจะรู้สึกว่าหายไปเล็กน้อยเมื่อคุณต้องการพูดไปแฮ็กรหัสทับทิมในโปรแกรมแก้ไขข้อความ โอ้และคุณมักจะพลาดสิ่งต่าง ๆ เช่น linq เช่นกัน


0

C # นั้นสมบูรณ์แบบเมื่อเริ่มโปรแกรม

มันเป็นสิ่งที่ฉันได้รับคำสั่งให้เริ่มต้นโดยไม่แม้แต่จะมีโอกาสได้ตะลุยในสิ่งอื่นใด (นอกเหนือจาก Hello World ใน Java สิ่งโลโก้พื้นฐานบางอย่างและบางสิ่งใน Scratch แต่ไม่มีอะไร "จริงจัง")

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

นอกจากนี้ยังมีการรองรับข้ามแพลตฟอร์มที่ดีในรูปแบบของ Mono (สำหรับผู้ที่คิดว่า Mono ไม่ใช่เรื่องใหญ่ - Unity Game Engine ช่วยให้คุณสามารถเขียนโค้ดในเวอร์ชั่นของมัน) มันค่อนข้างมีประโยชน์สำหรับทุกสิ่งไม่ว่าจะเป็นสคริปต์เกมหรือการออกแบบเว็บหรือแอพพลิเคชั่นของ Windows แน่นอนว่าบางภาษาจะดีกว่าสำหรับบางบรรทัดดังนั้นมันจะขึ้นอยู่กับทิศทางทั่วไปที่คุณวางแผนที่จะเข้าไป - ตัวอย่างเช่นถ้าคุณไปในทิศทางของเว็บแล้ว C # (ASP.NET) จะแน่นอน ความคิดที่ดี. หากคุณวางแผนที่จะเล่นเกมคุณควรคิดถึง C ++ แทน

ในท้ายที่สุดมันก็คุ้มค่าที่จะเรียนรู้มันแม้ว่าคุณจะไม่ได้ใช้มันเพื่อความเรียบง่ายของ Python หรือธรรมชาติที่เก่าแก่ของ Java (เนื่องจากวงจรการปล่อยสำหรับ Java ช้ามาก) - คุณเรียนรู้การเขียนโค้ดที่ดี การปฏิบัติในขณะที่ไม่ซับซ้อนเกินไปสำหรับมือใหม่ที่จะเรียนรู้


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

1
มันเป็นอย่างไร ยังอ่านยากหรือตกลงตอนนี้ ขอบคุณสำหรับวิธีการหัวขึ้น
Sbspider

-1

ในการเป็นโปรแกรมเมอร์คุณต้องมีความมุ่งมั่น โปรแกรมเมอร์ที่ฉันรู้จักนั้นเป็นคนที่ออกไปเพื่อเรียนรู้และสังเกตเห็นการเปลี่ยนแปลงของอุตสาหกรรม ฉันเริ่มเขียนโปรแกรมด้วยพื้นฐานบน Commodore Vic 20 (ใช่แล้ว) และยังคงพัฒนาไปสู่ภาษาใหม่อื่น ๆ ส่วนหนึ่งของปีการเขียนโปรแกรมของฉันรวมถึง COBOL ฉันเริ่มสังเกตเห็นว่าบางภาษาทำงานได้ดีที่สุดในบางกระบวนการเทียบกับภาษาอื่น คำแนะนำของฉันคือการเรียนรู้ภาษาใด ๆ และเพื่อทำความเข้าใจแนวคิดการเขียนโปรแกรมพื้นฐานเช่นลูปวิธีการเปรียบเทียบ ภาษาส่วนใหญ่สนับสนุนแนวคิดทั้งสามนั้น คุณไม่ควรพูดว่า "นี่เป็นวิธีที่ดีที่สุด" แต่ "ฉันจะปรับปรุงสิ่งนี้ได้อย่างไร" สิ่งที่แย่ที่สุดเกี่ยวกับประโยคสุดท้ายคือคุณสามารถตามใจตัวเอง การเขียนโปรแกรมคือความสนุกทำให้มันสนุก! อินเทอร์เน็ตเปิดวิธีใหม่ในการรับประสบการณ์การเขียนโปรแกรมเพราะระดับการเข้าถึงข้อมูลที่เรามีในวันนี้นั้นยิ่งใหญ่ สำหรับฉันก่อนอินเทอร์เน็ตฉันต้องไปที่ชั้นวางและดึงหนังสือ GRAY IBM เขียนโปรแกรมและเรียนรู้ วันนี้คุณสามารถพิมพ์สิ่งต่างๆลงใน google และ whammo ได้ง่ายๆ


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

-3

ว้าวคำตอบมากมาย นี่คือมุมมองของฉัน:

C # เป็นที่สำหรับเรียนรู้วิทยาศาสตร์คอมพิวเตอร์ ฉันเห็นว่ามันเป็นความคิดที่เลวร้ายเหลือเกิน ฉันจะแสดงรายการข้อกังวลของฉันด้านล่าง

  • C # เป็นภาษา Microsoft ไม่ว่าฉันจะตัดสิน MS ที่นี่แค่ว่านอกโลก MS มีการดูดซึมเล็กน้อย หากคุณเพียงต้องการที่จะเขียนโปรแกรมฮาร์ดแวร์ MS แล้วไปข้างหน้า แต่ฉันไม่เห็นวิธีการที่มั่นคงในด้านวิทยาศาสตร์คอมพิวเตอร์
  • ฉันไม่ใช่แฟนตัวยงของการเรียนรู้ที่จะเขียนโปรแกรมด้วยภาษาที่มีการจัดการ ฉันเชื่อว่าพวกเขามีค่าในการเรียนรู้วิธีจัดการหน่วยความจำของโปรแกรมและการสร้างโครงสร้างข้อมูล

เหนื่อยเกินไปที่จะเลือกภาษาอื่นอย่างรวดเร็ว


ฉันสามารถเข้าใจได้ถ้าคุณคิดว่าการผูกตัวเองกับ MS จะไม่ดีสำหรับอาชีพของคุณ แต่สิ่งที่เกี่ยวข้องกับการเรียนรู้วิทยาศาสตร์คอมพิวเตอร์? CS ไม่มีส่วนเกี่ยวข้องกับแพลตฟอร์มหรือ บริษัท
svick

-3

ฉันอยากจะแนะนำ C # หรือภาษาใด ๆ ที่นำเสนอสามสิ่งนี้ที่แกนกลางของพวกเขา:

พิมพ์อย่างเต็มที่รวบรวมและวัตถุที่มุ่งเน้นอย่างเต็มที่ ..

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


-6

ไม่คำตอบนั้นแย่มาก ทำไม? เขากำหนดหนังสือดี ๆ ที่คุณควรอ่าน แต่ถ้าไม่มีงานในห้องเรียนและห้องปฏิบัติการ (ห้องปฏิบัติการคอมพิวเตอร์) คุณจะหลงทางและผิดหวัง คุณต้องอยู่กับกลุ่มนักเขียนโปรแกรมใหม่คนอื่น ๆ เพราะมีอะไรมากมายในการเรียนรู้นอกเหนือจากสิ่งที่อยู่ในหนังสือเหล่านั้น ฉันไม่ได้บอกว่าคุณต้องไปหา BSCS แต่คุณต้องเข้าถึงอาจารย์ผู้สอนที่มีความรู้เช่นกันเมื่อสิ่งต่าง ๆ ที่เกิดขึ้นสามารถผิดพลาดได้ในทันทีเช่นปัญหาคอมไพเลอร์สร้างสภาพแวดล้อม ... คุณตั้งชื่อมัน คุณจะไม่มีโปรแกรมเมอร์ทำงานในสุญญากาศสักเท่าไร ไม่ว่าหนังสือของคุณจะต้องการหลักสูตรใดจะดีพอตราบใดที่คุณเลือกโรงเรียนที่เหมาะสม

ดังนั้นการลงทะเบียนสำหรับบางชั้นเรียนและมันจะสนุกมากขึ้น! นอกจากนี้หากคุณวางแผนที่จะรับงานเป็นโปรแกรมเมอร์คุณต้องมีการเชื่อมต่อและคุณจะได้ยินเสียงทั้งหมดเกี่ยวกับ บริษัท ที่รับสมัครงานที่มหาวิทยาลัย ฯลฯ

ในที่สุดการศึกษาในระบบเป็นสิ่งที่สำคัญมากเนื่องจากการเขียนโปรแกรมต้องการความรู้พื้นฐานทางทฤษฎีจำนวนมากเพื่อทำความเข้าใจว่าสิ่งต่าง ๆ ควรทำงานในทุกระดับ (hw / sw) เพื่อให้คุณสามารถหาวิธีแก้ไขสิ่งต่าง ๆ ได้ ทุกสิ่งทุกอย่างเป็นกล่องดำดังนั้นคุณต้องหาเหตุผลว่าทำไมบางสิ่งบางอย่างถึงเป็นแบบนั้นเพื่อที่คุณจะได้ใช้ลอจิคัลต่อไปในความมืด อย่างน้อยต้องใช้เวลา 2 ปีในการเขียนโปรแกรม (ไม่ว่าคุณจะเรียกมันว่าอะไร) คุณจะเสียเปรียบ

PS ฉันจะไม่เข้าใกล้. Net หรือ C # จนกว่าคุณจะได้สัมผัสกับ Java C # ไม่พอใจต่อดวงตา มันเป็นโค้ดที่ดูยุ่งและยุ่งเหยิง . NET IDE ดูดเกินความเชื่อ มันอยู่ในยุคมืดของมาตรฐาน IDE Java: C # ~ Data: ตำนาน


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

9
แม้ก่อนหน้าย่อหน้าสุดท้ายนี่เป็นเรื่องไร้สาระส่วนใหญ่ บางคนเรียนรู้ได้ดีในสภาพแวดล้อมของห้อง - แต่สำหรับคนอื่น ๆ มันเป็นการเสียเวลาเปล่า การเรียนรู้พื้นฐานทางทฤษฎีมีความสำคัญ แต่ไม่จำเป็นต้องมีห้องเรียนหรือการศึกษาที่เป็นทางการ - พวกเขาช่วยคนบางคน แต่ไม่ใช่ทุกคน (ใกล้เคียง)
Jerry Coffin

ความเห็นเป็นเพียงแค่นั้น มันไม่ได้เป็นข้อเท็จจริง ดังนั้นอย่ารู้สึกขุ่นเคือง
Tom Jones

คุณเข้าใจผิดข้อเสนอแนะสำหรับการศึกษาอย่างเป็นทางการ คุณต้องมีที่สำหรับถามคำถามและร่วมมือกับเพื่อนในห้องแล็บ การทำงานร่วมกันเป็นแนวคิดหลัก ขออภัยถ้าคุณเป็นผู้ใช้ C # และฉันทำให้คุณขุ่นเคือง
Tom Jones

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