ในฐานะนักพัฒนา Apple ที่ต้องการฉันต้องการรับความคิดเห็นของชุมชนว่าควรเรียนรู้ C ก่อนจะดีกว่าไหมก่อนที่จะย้ายเข้าสู่ Objective-C และท้ายที่สุด Cocoa Framework?
ลำไส้ของฉันบอกว่าเรียนรู้ C ซึ่งจะทำให้ฉันมีพื้นฐานที่ดี
ในฐานะนักพัฒนา Apple ที่ต้องการฉันต้องการรับความคิดเห็นของชุมชนว่าควรเรียนรู้ C ก่อนจะดีกว่าไหมก่อนที่จะย้ายเข้าสู่ Objective-C และท้ายที่สุด Cocoa Framework?
ลำไส้ของฉันบอกว่าเรียนรู้ C ซึ่งจะทำให้ฉันมีพื้นฐานที่ดี
คำตอบ:
ฉันจะเรียนรู้ C ก่อน ฉันเรียนรู้ C (และได้มากใน C) ก่อนที่จะย้ายไป Obj-C ฉันมีเพื่อนร่วมงานหลายคนที่ไม่เคยเป็นโปรแกรมเมอร์ C จริงๆพวกเขาเริ่มต้นด้วย Obj-C และเรียนรู้ C ให้มากที่สุดเท่าที่จำเป็นเท่านั้น
ทุกครั้งที่ฉันเห็นว่าพวกเขาแก้ปัญหาทั้งหมดใน Obj-C ได้อย่างไรซึ่งบางครั้งก็ส่งผลให้การแก้ปัญหางุ่มง่ามมาก โดยปกติแล้วฉันจะแทนที่รหัส Obj-C ด้วยรหัส C บริสุทธิ์ (หลังจากนั้นคุณสามารถผสมได้มากเท่าที่คุณต้องการเนื้อหาของวิธี Obj-C อาจเป็นรหัส C บริสุทธิ์ทั้งหมด) โดยไม่มีเจตนาที่จะดูถูกโปรแกรมเมอร์ Obj-C แต่อย่างใดมีโซลูชันที่สวยงามมากใน Obj-C ซึ่งเป็นโซลูชันที่ใช้งานได้ดี (และดูดีขึ้นมาก) ด้วยวัตถุ(การเขียนโปรแกรม OOP สามารถทำให้โปรแกรมที่ซับซ้อนน่ารักกว่าการเขียนโปรแกรมเชิงฟังก์ชันตัวอย่างเช่นความหลากหลายเป็นคุณสมบัติที่ยอดเยี่ยม) ... และฉันชอบ Obj-C มาก (มากกว่า C ++ มากฉันเกลียดไวยากรณ์ C ++ และคุณลักษณะของภาษาบางอย่างก็เกินความจำเป็น และนำไปสู่รูปแบบการพัฒนาที่ไม่ดี IMHO); อย่างไรก็ตามในบางครั้งฉันเขียนรหัส Obj-C ของเพื่อนร่วมงานอีกครั้ง (และฉันทำเช่นนั้นจริงๆถ้าฉันคิดว่านี่เป็นสิ่งที่จำเป็นจริงๆ) รหัสผลลัพธ์มักจะเล็กกว่า 50% ต้องการเพียง 25% ของหน่วยความจำที่ใช้ ก่อนหน้านี้และเร็วขึ้นประมาณ 400% เมื่อรันไทม์
สิ่งที่ฉันพยายามจะพูดที่นี่: ทุกภาษามีข้อดีข้อเสีย C มีข้อดีข้อเสีย Obj-C ก็เช่นกัน อย่างไรก็ตามคุณสมบัติที่ยอดเยี่ยมจริงๆของ Obj-C (นั่นคือเหตุผลที่ฉันชอบมันมากกว่า Java) คือคุณสามารถข้ามไปที่ C ธรรมดาได้ตามต้องการและกลับมาอีกครั้ง เหตุใดจึงเป็นคุณสมบัติที่ยอดเยี่ยมเช่นนี้ เนื่องจากเช่นเดียวกับที่ Obj-C แก้ไขข้อเสียของ C บริสุทธิ์หลายประการ C บริสุทธิ์สามารถแก้ไขข้อเสียบางประการของ Obj-C ได้ หากคุณผสมผสานเข้าด้วยกันคุณจะได้รับทีมที่ทรงพลังมาก
หากคุณเรียนรู้แค่ Obj-C และไม่มีความคิดเกี่ยวกับ C หรือรู้เพียงพื้นฐานของมันและไม่เคยลองว่ามันสามารถแก้ปัญหาทั่วไปได้อย่างหรูหราเพียงใดคุณได้เรียนรู้เพียงครึ่งเดียวของ Obj-C C เป็นส่วนพื้นฐานของ Obj-C ความสามารถในการใช้ C ได้ทุกที่ทุกเวลาเป็นคุณสมบัติพื้นฐานของมัน
ตัวอย่างทั่วไปคือรหัสบางอย่างที่เราใช้ซึ่งต้องเข้ารหัสข้อมูลใน base64 แต่เราไม่สามารถใช้ไลบรารีภายนอกสำหรับสิ่งนั้น (ไม่มี OpenSSL lib) เราใช้ตัวเข้ารหัส base64 ซึ่งเขียนทั้งหมดโดยใช้คลาส Cocoa มันใช้งานได้ดี แต่เมื่อเราเข้ารหัสข้อมูลไบนารี 200 MB มันต้องใช้เวลาชั่วนิรันดร์และค่าใช้จ่ายของหน่วยความจำก็ไม่สามารถยอมรับได้ ฉันแทนที่ด้วยตัวเข้ารหัส base64 ขนาดเล็กและกะทัดรัดเป็นพิเศษที่เขียนทั้งหมดเป็นฟังก์ชัน C เดียว (ฉันคัดลอกเนื้อหาของฟังก์ชันลงในตัวเมธอดเมธอดใช้ NSData เป็นอินพุตและส่งคืน NSString เป็นเอาต์พุตอย่างไรก็ตามภายในฟังก์ชันทุกอย่างเป็น C) ตัวเข้ารหัส C มีขนาดกะทัดรัดกว่ามากมันเอาชนะตัวเข้ารหัสโกโก้บริสุทธิ์ด้วยความเร็วปัจจัย 8 และค่าใช้จ่ายของหน่วยความจำก็น้อยกว่ามาก การเข้ารหัส / ถอดรหัสข้อมูลการเล่นกับบิตและงานระดับต่ำที่คล้ายกันเป็นเพียงจุดแข็งของ C
อีกตัวอย่างหนึ่งคือโค้ด UI บางส่วนที่ดึงกราฟจำนวนมาก สำหรับการจัดเก็บข้อมูลที่จำเป็นในการวาดกราฟเราใช้ NSArray's NSMutableArray จริงๆแล้วเนื่องจากกราฟเป็นภาพเคลื่อนไหว ผลลัพธ์: ภาพเคลื่อนไหวกราฟช้ามาก เราแทนที่ NSArray ทั้งหมดด้วยอาร์เรย์ C ปกติออบเจ็กต์ที่มีโครงสร้าง (หลังจากที่ข้อมูลพิกัดกราฟทั้งหมดไม่มีอะไรที่คุณต้องมีในออบเจ็กต์) การเข้าถึงตัวนับด้วยวิธีง่ายๆสำหรับลูปและเริ่มย้ายข้อมูลระหว่างอาร์เรย์ด้วยเมมโคปีแทนที่จะนำข้อมูลจากอาร์เรย์หนึ่งไปยัง อีกอันคือดัชนีสำหรับดัชนี ผลลัพธ์: เพิ่มความเร็วตามปัจจัย 4 กราฟเคลื่อนไหวได้อย่างราบรื่นแม้ในระบบ PPC รุ่นเก่า
จุดอ่อนของ C คือทุกโปรแกรมที่ซับซ้อนมากขึ้นจะน่าเกลียดในระยะยาว การทำให้แอปพลิเคชัน C สามารถอ่านได้ขยายและจัดการได้ต้องการวินัยของโปรแกรมเมอร์อย่างมาก หลายโครงการล้มเหลวเพราะวินัยนี้ขาดหายไป Obj-C ช่วยให้คุณจัดโครงสร้างแอปพลิเคชันของคุณได้ง่ายโดยใช้คลาสการสืบทอดโปรโตคอลและอื่น ๆ ที่กล่าวว่าฉันจะไม่ใช้ฟังก์ชัน C บริสุทธิ์ข้ามพรมแดนของวิธีการเว้นแต่จำเป็น ฉันชอบที่จะเก็บรหัสทั้งหมดไว้ในแอป Objective-C ภายในวิธีการของวัตถุ อย่างอื่นเอาชนะวัตถุประสงค์ของแอปพลิเคชัน OO อย่างไรก็ตามภายในวิธีการบางครั้งฉันใช้ C บริสุทธิ์เท่านั้น
คุณสามารถเรียนรู้ C และ Objective-C ได้อย่างเพียงพอในเวลาเดียวกัน - ไม่จำเป็นต้องเรียนรู้ข้อเล็ก ๆ น้อย ๆ ของ C (รวมถึงเลขคณิตของตัวชี้และอื่น ๆ ) ก่อนที่จะเริ่มด้วยการเพิ่ม Objective-C ในภาษาและในฐานะโปรแกรมเมอร์มือใหม่ การเริ่มใช้ Objective-C อย่างรวดเร็วอาจช่วยให้คุณเริ่ม "คิดในวัตถุ" ได้เร็วขึ้น
ในแง่ของทรัพยากรที่มีอยู่เอกสารของ Apple มักจะถือว่าคุ้นเคยกับ C ดังนั้นการเริ่มต้นด้วยภาษาโปรแกรม Objective-C 2.0จะไม่เป็นประโยชน์กับคุณมากนัก ฉันจะลงทุนในสำเนา Programming ใน Objective-C โดย Stephen Kochan (ขึ้นอยู่กับว่าคุณต้องการดำเนินการเร็วแค่ไหนคุณอาจพิจารณารอรุ่นที่สอง):
การเขียนโปรแกรม Objective-C นักพัฒนา Library Programming Objective-C 2.0 Developers Library
ไม่ถือว่ามีประสบการณ์มาก่อนและสอน Objective-C และ C ให้คุณได้มากเท่าที่คุณต้องการ
หากคุณรู้สึกทะเยอทะยานเล็กน้อยคุณอาจเริ่มต้นด้วยบทช่วยสอน "Learn C" ของ Scott Stevensonแต่มีข้อกำหนดเบื้องต้นบางประการ ("คุณควรรู้ภาษาสคริปต์หรือภาษาโปรแกรมอย่างน้อยหนึ่งภาษารวมถึงฟังก์ชันตัวแปรและลูปของคุณแล้ว ' จะต้องพิมพ์คำสั่งลงใน Mac OS X Terminal ด้วย ")
(สำหรับบันทึกและเพื่อบริบท: ฉันเรียนรู้ทั้งสองอย่างพร้อมกันในปี 1991 - ดูเหมือนว่าฉันจะไม่ทำอันตรายใด ๆ แม้ว่าฉันจะมีพื้นหลังในภาษาเบสิกปาสคาลโลโก้และ LISP )
ฉันคิดมากเกี่ยวกับปัญหานี้ก่อนที่จะเขียนหนังสือเรื่อง Objective-C อันดับแรกฉันเชื่อจริงๆว่าการเรียนรู้ภาษา C ก่อนที่จะเรียน Objective-C นั้นเป็นเส้นทางที่ผิด C เป็นขั้นตอนภาษาที่มีคุณสมบัติมากมายที่ไม่จำเป็นสำหรับการเขียนโปรแกรมใน Objective-C โดยเฉพาะในระดับมือใหม่ ในความเป็นจริงการใช้คุณลักษณะบางอย่างเหล่านี้ขัดต่อหลักการของการยึดมั่นในวิธีการเขียนโปรแกรมเชิงวัตถุที่ดี นอกจากนี้ยังไม่ควรสอนรายละเอียดทั้งหมดของภาษาขั้นตอน (และโจมตีวิธีแก้ปัญหาด้วยฟังก์ชันและเทคนิคการเขียนโปรแกรมเชิงโครงสร้าง) ก่อนที่จะเรียนรู้ภาษาเชิงวัตถุ สิ่งนี้สามารถเริ่มโปรแกรมเมอร์ไปในทิศทางที่ไม่ถูกต้องซึ่งอาจนำไปสู่การพัฒนาแนวความคิดและแนวความคิดที่ไม่ถูกต้องเพื่อส่งเสริมวินัยการเขียนโปรแกรมเชิงวัตถุที่ดี เพียงเพราะ Objective-C เป็นส่วนเสริมของภาษา C ไม่ได้หมายความว่าคุณต้องเรียนรู้ C ก่อน!
ฉันคิดว่าการสอน Objective-C และภาษา C เป็นภาษาบูรณาการเดียวเป็นแนวทางที่ถูกต้อง ไม่มีเหตุผลที่จะเรียนรู้ว่าคำสั่ง "for" มาจากภาษา C และไม่ได้มาจากภาษา superset Objective-C นอกจากนี้ทำไมต้องเรียนรู้โดยละเอียดเกี่ยวกับสิ่งต่างๆเช่นอาร์เรย์และสตริง C (และจัดการกับสิ่งเหล่านี้)มาก่อนเรียนรู้เกี่ยวกับอาร์เรย์ (NSArray) และสตริงออบเจ็กต์ (NSString) เช่น? ข้อความ C จำนวนมากอุทิศเวลาให้กับโครงสร้างและตัวชี้ไปยังโครงสร้างและวนซ้ำผ่านอาร์เรย์ที่มีพอยน์เตอร์ แต่คุณสามารถเริ่มเขียนโปรแกรม Objective-C ได้โดยไม่รู้เกี่ยวกับคุณสมบัติของภาษา C เหล่านี้ และสำหรับโปรแกรมเมอร์มือใหม่นั่นเป็นเรื่องใหญ่ ไม่เพียง แต่จะทำให้เส้นการเรียนรู้สั้นลง แต่ยังช่วยลดปริมาณของเนื้อหาที่ต้องเรียนรู้ (และบางส่วนก็คัดกรองออก) ในการเขียนโปรแกรม Objective-C
ฉันยอมรับว่าคุณจะต้องการเรียนรู้คุณสมบัติ C พื้นฐานมากที่สุดหากไม่ใช่ทั้งหมด แต่หลายอย่างสามารถเลื่อนออกไปได้จนกว่าจะเข้าใจการกำหนดคลาสและวิธีการทำงานกับอ็อบเจ็กต์และนิพจน์ข้อความและทำความเข้าใจแนวคิดของการสืบทอดและ ความหลากหลายเป็นที่เข้าใจกันดี
ฉันจะดำดิ่งไปกับ Objective C - ถ้าคุณมีภาษาอยู่สองสามภาษาภายใต้เข็มขัดของคุณมันไม่ใช่ไวยากรณ์ที่เป็นเส้นโค้งการเรียนรู้นั่นคือ Cocoa
ฉันคิดว่าส่วนใหญ่แล้วการเรียนรู้ C เป็นความคิดที่ดีไม่ว่าคุณจะไปอยู่ในเวทีใดอย่างน้อยที่สุดก็เพื่อให้ได้ผลงานภายในของการพัฒนาซอฟต์แวร์ก่อนที่จะใช้สินค้าที่บรรจุไว้ล่วงหน้าด้วยวิธีนี้หากมีบางอย่างผิดพลาด คุณมีโอกาสที่จะเข้าใจการทำงานภายในได้ดีขึ้น มีการอภิปรายมากมายเกี่ยวกับเรื่องนี้ใน SO และเป็นคำถามที่ค่อนข้างเป็นอัตวิสัย แต่โดยทั่วไปแล้วคุณจะใช้ C ภายในรหัส Objective-C ของคุณดังนั้นฉันเดาว่ามันขึ้นอยู่กับคุณจริงๆ ฉันเป็นคนที่มีพื้นฐาน แต่บางครั้งมันก็เข้ามาขวางทางและฉันรู้จักคนฉลาดหลายคนที่ทำงานจากบนลงล่างฉันคิดว่าส่วนสำคัญคือคุณจะต้องเข้าใจการทำงานภายในอย่างที่จะเป็น กำหนดความสามารถของคุณให้แตกต่างจากผู้ที่ไม่สามารถเพิ่มขีดความสามารถของคุณได้
เป็นความคิดที่ดีที่จะเรียนรู้ C ก่อนที่จะเรียนรู้ Objective-C ซึ่งเป็นส่วนเหนือที่เข้มงวดของ C ซึ่งหมายความว่า Objective-C สามารถรองรับรหัส C ปกติทั้งหมดดังนั้นรหัสทั่วไปของโปรแกรม C จะต้องปรากฏแม้ใน Objective- รหัส C
นอกเหนือจากการมองสิ่งต่างๆอย่างหมดจดจากมุมมองของภาษาแล้วคุณจะพบว่า Mac OS X เป็นระบบปฏิบัติการ Unix ที่สมบูรณ์ ไลบรารีระดับระบบทั้งหมดเขียนด้วย C
อาจเป็นไปได้ที่จะเรียนรู้ทั้งสองอย่างในเวลาเดียวกัน แต่ฉันคิดว่าคุณจะซาบซึ้งและเข้าใจ Objective-C มากขึ้นหากคุณมีความรู้ในการทำงานที่มั่นคงของ C ก่อน
ฉันจะเรียน Objective-C และเรียนรู้ C ให้มากที่สุดเท่าที่คุณต้องการ
พื้นที่ของ C ที่คุณไม่ต้องพึ่งพามาก:
ในขณะที่คุณเรียน Objective-C และ Cocoa คุณไม่สามารถหลีกเลี่ยงการเรียนรู้บิตของ C ได้ตัวอย่างเช่นรูปสี่เหลี่ยมผืนผ้ามักจะแสดงโดย CGRect ซึ่งเป็นโครงสร้าง C
หากคุณมีเวลาเรียนรู้ C. อย่างที่คนอื่น ๆ กล่าวไว้ที่นี่หนังสือของ Kochan (ฉบับที่สองและครั้งแรก) เป็นหนังสือที่ยอดเยี่ยมสำหรับการอ่าน
มีหลายสิ่งที่คุณไม่สามารถทำได้อย่างหมดจดใน Objective-C ดังนั้นการเรียนรู้ทักษะ C ขั้นพื้นฐานจะค่อนข้างสำคัญ อย่างน้อยคุณจะต้องเข้าใจการประกาศตัวแปรและฟังก์ชั่นไลบรารี C พื้นฐานมิฉะนั้นคุณจะหงุดหงิด
จริงๆแล้วภาษาหลายภาษาจึงขึ้นอยู่กับไวยากรณ์ C ซึ่งเป็นสิ่งที่ดีที่จะคุ้นเคย ฉันจะใช้เวลาหนึ่งหรือสองสัปดาห์เพื่อทำความคุ้นเคยกับ C โดยไม่คำนึงถึง
ที่กล่าวว่าฉันแค่สอน Objective C ให้ตัวเองและฉันต้องพูดตามตรง: ฉันไม่พบว่าประสบการณ์ C ของฉันจะมีประโยชน์อย่างที่ฉันคิด Objective C เปิดหูเปิดตาให้ฉันอย่างแน่นอน
คุณสามารถเข้าสู่ Objective-C ได้โดยตรงโดยมีประโยชน์ดังต่อไปนี้:
อย่างน้อยสำหรับฉันก็ง่ายกว่าที่จะเรียนรู้ภาษาใหม่เมื่อฉันสนใจแอพหรือตัวอย่างบางอย่างและฉันก็ล้มเหลวเมื่อต้องเรียนรู้สิ่งอื่นที่ไม่ใช่สิ่งที่ฉันสนใจ
คุณสามารถปรับแต่งความรู้ C ของคุณได้ในภายหลังหากคุณสนใจในการเขียนโปรแกรมระดับล่าง
ดีกว่าฉันไม่รู้เลยแม้แต่น้อยเพราะฉันไม่คุ้นเคยกับ Objective-C
แต่ฐานของ C นั้นไม่ยากที่จะเรียนรู้มันไม่ใช่ภาษาที่ซับซ้อนมากนัก (ในแง่ของไวยากรณ์ไม่ใช่ในแง่ของการเรียนรู้!) ดังนั้นไปเลยมันจะไม่เสียเวลา
โดยส่วนตัวแล้วฉันคิดว่าการเรียนภาษา C เป็นความคิดที่ดีเสมอซึ่งจะช่วยให้เข้าใจถึงวิธีการทำงานของคอมพิวเตอร์ได้เป็นอย่างดี ท้ายที่สุดแล้วภาษาและระบบส่วนใหญ่ยังคงเขียนเป็น C จากนั้นไปต่อ! :-)
PS.: โดย "ไปต่อ" ฉันไม่ได้หมายถึง "ทิ้ง" แค่ "เรียนรู้เพิ่มเติม เมื่อคุณรู้จัก C แล้วคุณจะไม่ทิ้งมันไป: Java ใช้ JNI เพื่อเรียกรูทีน C สำหรับสิ่งที่มีระดับต่ำ Python, Lua และอื่น ๆ มักจะขยายด้วยรหัส C (การอ้างอิง Lua แม้จะถือว่าความรู้ C บางอย่างสำหรับบางฟังก์ชันซึ่งเป็นเพียง กระดาษห่อบาง ๆ สำหรับฟังก์ชัน C ด้านหลัง) และอื่น ๆ
ใช่การเรียนรู้ภาษา C ก่อนภาษาขั้นสูงอื่น ๆ จะช่วยให้คุณเรียนรู้ภาษาอื่น ๆ ที่แปลกประหลาด
ตามวิกิพีเดีย Objective-C เป็นชุด super ที่เข้มงวดของ C. ในกรณีนี้ฉันขอแนะนำให้เรียนรู้ C ก่อน จากนั้นเมื่อคุณเรียนรู้ Objective-C จะมีความชัดเจนว่าส่วนใดบ้างที่เพิ่มเข้ามาเป็นส่วนหนึ่งของ Objective-C
C ให้นามธรรมจากการประกอบน้อยมาก C Compiler บางตัวจะช่วยให้คุณสามารถประกอบแบบอินไลน์ได้ สิ่งนี้มีประโยชน์มากสำหรับการคิดเกี่ยวกับวิธีการทำงานของคอมพิวเตอร์ซึ่งเป็นสิ่งสำคัญที่ต้องรู้
ตามที่กล่าวไว้หากคุณสนใจ Object-C จริงๆอย่าปล่อยให้ตัวเองจมปลักอยู่กับการเขียนบางสิ่งใน C เพียงเพราะมัน "ดีสำหรับคุณ" คุณไม่จำเป็นต้องหงุดหงิดตัวเองในขณะที่พยายามเรียนรู้ชุดทักษะใหม่ สิ่งสำคัญคือคุณต้องสนุกกับสิ่งที่ทำ
คุณต้องการเป็นนักพัฒนาฮาร์ดคอร์หรือไม่? จากนั้นเรียนรู้ c ก่อน
หนังสือที่คุณต้องใช้เพื่อให้เชี่ยวชาญ c เป็นงานเขียนที่ดีที่สุดในด้านเทคโนโลยี นี่คือสิ่งที่คุณต้องการ:
วัตถุประสงค์ C แตกต่างจาก C อย่างเพียงพอเนื่องจากไม่ควรเรียนรู้ C ก่อน
จากมุมมองของไวยากรณ์ / ภาษา - ครอบครัวเราเกือบจะดีกว่าการศึกษา SmallTalk (ซึ่งเป็นไปตามวัตถุประสงค์ C)
จากมุมมองเชิงปฏิบัติให้เน้นความพยายามในการเรียนรู้ทีละภาษา
ในภายหลังหากคุณต้องการเรียนรู้ภาษาอื่น C ++, Java และ Python คือ 1) เรียนรู้ได้ง่ายเป็นกลุ่ม 2) เป็นที่นิยมและเป็นที่ต้องการของตลาด 3) มีประสิทธิภาพ
คุณควรมีความรู้พื้นฐานเกี่ยวกับ C ก่อนเริ่ม Objective_C แต่ไม่จำเป็นต้องเชี่ยวชาญในทุกรายละเอียดของ C
ฉันได้เผยแพร่บันทึกของฉันหลังจากอ่าน "Programming in Objective-C" แล้วเผื่อว่าจะช่วยคนอื่นได้
ขึ้นอยู่กับหลายภาษาที่คุณรู้อยู่แล้วอาจเป็นความคิดที่ดีกว่าที่จะเริ่มเรียนรู้ Objective-C พื้นฐานในภาษาส่วนใหญ่นั้นเหมือนกันโดยพื้นฐานแล้วเป็นไวยากรณ์ที่แตกต่างกัน การเรียนรู้ C อันดับแรกไม่ได้สร้างความแตกต่างมากนักเมื่อพูดถึงการเรียน Objective-C
ฉันเรียน Objective-C ทันทีและมันก็ใช้ได้ดีมาประมาณหนึ่งปีแล้วฉันเพิ่งมีปัญหาในการอ่านรหัส C เมื่อฉันดาวน์โหลดโครงการเพื่อดูว่ามันทำงานอย่างไร แต่ตอนนี้ฉันรู้สึกว่าจำเป็นต้องเรียนรู้ C จริงๆคุณสามารถลองเรียนรู้ ObjC ไม่มี C แต่ไม่ช้าก็เร็วคุณจะต้องมี C
IMHO ควรเรียนรู้ C อย่างน้อยก่อนและโดยเฉพาะอย่างยิ่งเกี่ยวกับคำแนะนำ สิ่งนี้สำคัญยิ่งกว่าถ้าภาษาหนึ่งมาจากภาษาที่ไม่มีคำแนะนำ หลายคนถามเกี่ยวกับรหัสเช่น
NSString *string = [[NSString alloc] init];
string = @"something";
เนื่องจากพวกเขาไม่รู้เกี่ยวกับความแตกต่างระหว่างตัวชี้และวัตถุที่ชี้ไป
แน่นอนว่าเราไม่จำเป็นต้องเรียนรู้C ทั้งหมดก่อนที่จะเริ่มต้นด้วย Objective-C แต่สิ่งพื้นฐานบางอย่างนั้นจำเป็นอย่างยิ่ง
ห่าไม่ตรงไปที่วัตถุประสงค์ C!
ฉันย้ายจาก ActionScript 3 มาเป็น Objective C และฉันมีนักศึกษาฝึกงานที่ บริษัท แห่งหนึ่งแล้ว!
ทำในสิ่งที่คุณต้องการ
หากคุณเรียนรู้ภาษาอื่นมาก่อนคุณจะมีความสับสนในการเขียนไวยากรณ์ที่ถูกต้อง ฉันไม่รู้จุดประสงค์ แต่ Object C ใช้ไวยากรณ์แปลก ๆ (ไม่ธรรมดา) ในการเรียกเมธอดอ็อบเจ็กต์ มันตั้งชื่อเป็นการส่งข้อความใช่มันเป็นความจริงตามแนวคิด Object Oriented ที่บริสุทธิ์อย่างไรก็ตามชื่อภาษาเชิงวัตถุส่วนใหญ่เป็นวิธีการเรียกและใช้วิธีการเรียกแบบดั้งเดิมมากกว่า การเก็บขยะก็เป็นสิ่งที่แปลกมาก Object C จะขึ้นอยู่กับจำนวนอ้างอิงของโรงเรียนเก่า ดังนั้นคุณจะมีปัญหาในการยอมรับหากคุณเปลี่ยนจากภาษาอื่น ฉันกำลังเขียนหนังสือคู่มือการโยกย้าย Object C ฉบับย่อสำหรับโปรแกรมเมอร์ C / C ++ โดยหวังว่าจะช่วยให้ผู้คนหยิบความแตกต่างทั้งหมดได้เร็วขึ้น