ข้อสมมติฐานการเขียนโปรแกรมที่ใช้เวลานานและไม่ถูกต้อง [ปิด]


281

ฉันกำลังทำการวิจัยเกี่ยวกับข้อผิดพลาดทั่วไปและข้อสันนิษฐานที่ไม่ดีของวิศวกรซอฟต์แวร์จูเนียร์ (และอาจอาวุโส)

ข้อสันนิษฐานที่ถือครองยาวนานที่สุดของคุณที่ได้รับการแก้ไขในที่สุด

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

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


คำตอบ:


545

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

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

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


68
จริงจัง! นั่นคือปัญหาของอายุนี้ ข้อมูลก็ท้อใจ ฉันมีการเปิดเผยเมื่อไม่กี่สัปดาห์ที่ผ่านมาเมื่อฉันรู้สึกเหมือนเป็นผู้แพ้ที่สมบูรณ์ในทุกสิ่งที่ฉันทำ (ไม่ใช่ครั้งแรก) เกี่ยวกับการวิจัย คนที่ได้รับการตีพิมพ์ในธุรกรรม IEEE ไม่จำเป็นต้องมีทักษะเช่นเดียวกับคนที่ทำงานที่ Google โม้ใน StackOverflow อาจารย์ที่ยอดเยี่ยมหรือเขียนบล็อกการเขียนโปรแกรมที่ยอดเยี่ยม แน่นอนคนที่ดีที่สุดนั้นเจ๋งกว่าเรามาก แต่พวกเขาไม่รู้ทุกสิ่งที่คุณรู้ว่าคุณไม่รู้ ดังนั้นอยู่ที่เย็น
jbasko

40
นอกจากนี้ยังช่วยให้เข้าใจว่านักเขียนบล็อกเหล่านั้นไม่ได้เขียนทุกอย่างออกจากหัวของพวกเขา นักเขียนบล็อกที่ดีทำการค้นคว้าหัวข้อและเรียนรู้สิ่งใหม่ขณะที่เขียนบทความ
JohnFx

47
ฉันหมกมุ่นทุกวันเกี่ยวกับสิ่งที่ฉันไม่มีเวลาอ่านและเรียนรู้ บางครั้งมันทำให้ฉันมีความรู้สึกผิดที่น่ากลัว
แบรด

9
@Zilupe: สาธุกับสิ่งนั้น ฉันตีพิมพ์บทความและวารสารการประชุมระดับนานาชาติ ในสายตาของบางคนฟังดูเจ๋ง จนกว่าคุณจะรู้ว่ามันไม่ได้ใช้ความพยายามอย่างมากในการเผยแพร่เอกสาร เราไม่ใช่อัจฉริยะ เราก็เหมือนทุกคน เราทำผิดพลาดและเราเผยแพร่เอกสารอึ ดียกเว้นสำหรับบางกลุ่มน้อยอัจฉริยะจริง ...
Hao Wooi Lim

4
+1 สิ่งที่ฉันได้อ่าน ฉันคิดว่าฉันเป็นคนเดียว
Randell

308

ผู้คนรู้ว่าพวกเขาต้องการอะไร

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

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

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

แก้ไข: คำตอบนี้เป็นชุมชน -wiki เพื่อเอาใจผู้คนที่อารมณ์เสียที่คำตอบนี้ให้ฉันตัวแทน


9
หรือเปลี่ยนสิ่งที่พวกเขาต้องการหลังจากเห็นสิ่งที่พวกเขาต้องการก่อนหน้านี้ ผู้คนชอบเปลี่ยนใจ ฉันรู้เพราะฉันเป็นคน
J. Polfer

13
คุณให้สิ่งที่พวกเขาขอไม่ใช่สิ่งที่พวกเขาต้องการ
Brent Baisley

47
ทำไมการไม่มีคำตอบที่น่าเบื่อจึงทำให้คะแนนมากเกินไป?!
nes1983

39
ว้าว. เสียงเหมือนมีคนต้องการกอด
bzlm

24
My god @ people กำลังบ่นตัวแทน stackoverflow ไม่ใช่การแข่งขัน โหวตขึ้นถ้าคุณชอบคำตอบอย่าลงคะแนนเพราะคุณอิจฉาคุณไม่ได้โพสต์ไว้ก่อน
Dmitri Farkov

292

ฉันรู้ว่าปัญหาด้านประสิทธิภาพอยู่ที่ใดโดยไม่ทำโปรไฟล์


10
ฉันคิดว่านี่เป็นเหตุผลที่การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นเรื่องปกติ
Hao Wooi Lim

10
+1 ว้าวมีบางคนมีคำตอบที่ไม่สำคัญหรือไม่เกี่ยวข้อง
Mark Rogers

3
ฉันมีแท็บเล็ตบางตัวที่ควรช่วยในการเพิ่มประสิทธิภาพก่อนวัยอันควร ...
AndyM

232

ว่าฉันควรมีจุดทางออกเดียวจากฟังก์ชั่น / วิธี


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

24
ใครมากับสิ่งนี้โดยวิธี? มันเหมือนกับการเขียนโปรแกรมตำนานเมือง
แบรด

49
คนที่ต้องแก้จุดบกพร่องรหัสของคนอื่นคือคนที่คิดเรื่องนี้
gatorfax

23
ฉันคิดว่าความคิดที่ถือโดยทั่วไป แต่ความคิดที่ผิดนั้นมีพื้นฐานมาจากความเข้าใจผิด เมื่อคุณออกจากฟังก์ชั่นคุณควรกลับไปที่จุดเดิมเสมอ นั่นเป็นกฎที่สำคัญในภาษาอย่าง BASIC ที่ไม่ได้บังคับใช้: ตัวอย่างเช่นคุณควรใช้ GOSUB แทน GOTO ในภาษาเช่น C # หรือ Java ที่เรียกวิธีการมันเป็นไปโดยอัตโนมัติ แต่เนื่องจากมันเป็นไปโดยอัตโนมัติฉันคิดว่ามันปรับเปลี่ยนจากตรรกะ "เพียงหนึ่งจุดกลับไปยังจุด" กับจุดที่ไร้สาระ "จุดทางออกเดียวเท่านั้น"
Ryan Lundy

35
จากภาษาเช่น C ที่คุณต้องการปลดปล่อยทรัพยากรออกด้วยตนเอง จุดทางออกหลายจุดเป็นโอกาสที่ดีสำหรับการรั่วไหลของทรัพยากร IMO ไม่มีจุดใดในภาษาที่มีข้อยกเว้นเนื่องจากคุณมักไม่รู้ว่าจุดออกของคุณอีกต่อไปหรืออยู่ในระหว่างการแถลง - ในภาษาเหล่านี้สิ่งที่เหลืออยู่คือ "โครงสร้างสำหรับการอ่าน"
peterchen

228

ผู้เขียนโปรแกรมที่ไม่เข้าใจสิ่งที่ฉันกำลังพูดถึง


243
เข้าใจ / ดูแล ..
nickf

8
ฉันยังคงมีอย่างใดอย่างหนึ่งในเวลานี้ ... ผมคิดว่าอย่างน้อยภรรยาของผมจะได้เริ่มต้นที่จะเข้าใจอย่างถูกต้องโดยขณะนี้: P
workmad3

3
โอ้ที่รักฉันกลัวว่าฉันอาจจะยังไม่ได้เรียนรู้สิ่งนี้!
thatismatt

3
ใช่บางครั้งฉันลืมชมของฉันและจบลงด้วยพวงของคนรึป่าวรูปลักษณ์ที่ว่างบนของพวกเขา stairing ใบหน้าที่ผมก็มีความสุขเมื่อมีคนแสดงความสนใจแม้ว่า
Petey B

3
นี่คือความผิดหวังที่ยิ่งใหญ่ที่สุดของฉันกับอาชีพ
Andres Jaan Tack

219

ซอฟต์แวร์ bugfree นั้นเป็นไปได้


35
+1 แม้ว่านาซาเกือบการจัดการมัน
แพทริคแมคโดนั

55
ใช่ แต่ "เกือบ" เสียค่าใช้จ่ายไม่กี่ล้านดอลลาร์ :)
เจ็ม

15
@Triynko ของคุณ "เป็นไปได้" และ @ JaredPar ของ "เป็นไปได้" จะไม่เหมือนกัน ทฤษฎีและการปฏิบัติอาจเหมือนกันในทางทฤษฎี แต่แตกต่างกันมากในทางปฏิบัติ
wilhelmtell

13
@Joseph ส่วนหนึ่งของปัญหาคือคนคิดโปรแกรม Hello World มีข้อผิดพลาดฟรี พวกเขาไม่. ส่วนใหญ่ไม่ได้ตรวจสอบข้อผิดพลาดใน printf เช่นหรือบัญชีอื่น ๆ พยายามที่ล้มเหลว IO
JaredPar

9
@RussellH, ไม่ คุณไม่สามารถระบุค่าส่งคืนและกระบวนการที่ได้จะส่งคืนหน่วยความจำขยะแบบสุ่ม
JaredPar

199

ตัวแปรสมาชิกส่วนตัวนั้นเป็นส่วนตัวของอินสแตนซ์ไม่ใช่คลาส


192
ฉันถือสมมติฐานนั้นจนกระทั่ง ... เพียงแค่ตอนนี้
TheMissingLINQ

9
@ebrown ฉันมักจะพบว่ามีประโยชน์เมื่อเขียนเท่ากับ () วิธีการ
เดฟเวบบ์

12
พวกเขาอยู่ในรูบี
Mike Kucera

17
นี่เป็นเรื่องปกติสำหรับฉันที่คำตอบนี้ไม่สมเหตุสมผลเมื่อสองสามครั้งแรกที่ฉันอ่าน ตอนนี้ฉันต้องการเรียนรู้ทับทิมเพื่อให้ฉันสับสนในวิธีอื่น :)
jmucchiello

16
@Kiewic หากคุณมีตัวแปรสมาชิกส่วนตัวที่เรียกว่า myvar ภายในชั้นเรียนของคุณคุณสามารถอ้างอิง other.myVar โดยตรงในรหัสของคุณถ้าอื่น ๆ เป็นตัวอย่างของชั้นนี้ ผมเคยคิดว่าเพราะมันเป็น "ส่วนตัว" คุณต้องใช้ other.getMyVar () แม้กระทั่งภายในชั้นเรียน
Dave Webb

166

ฉันคิดว่าการพิมพ์แบบคงที่กำลังนั่งอยู่ที่คีย์บอร์ด


53
ด้วยความจริงใจหรือไม่สิ่งนี้ทำให้ฉันหัวเราะอย่างหนักเมื่อสิ้นสุดวันทำงานอันยาวนาน : P
Olivier Tremblay

5
++ สำหรับการหัวเราะที่ดี ฟังดูเหมือนสิ่งที่สามี (ไม่ใช่ช่างเทคนิค) ของฉันจะเกิดขึ้น
jess

11
+1! ฉันคิดว่าการพิมพ์เป็ดเกี่ยวข้องกับการพิมพ์ด้วย หรือเป็ด หรือทั้งคู่.
SqlACID

162

ให้คุณเข้าใจปัญหาก่อนที่จะเริ่มพัฒนา


32
นี่เพื่อนของฉันควรเป็น: "ที่คุณสามารถเข้าใจปัญหาได้อย่างเต็มที่" แต่มันเป็นเรื่องจริง และเป็นแนวคิดที่เข้าใจยากและเข้าใจยาก
KarlP

4
คุณไม่สามารถเข้าใจปัญหา "เต็มที่" แต่แน่นอนว่าคุณต้องเข้าใจปัญหา (ในระดับหนึ่ง) ก่อนเริ่มพัฒนา bit.ly/kLXgL
OscarRyz

บางครั้งคุณต้องเริ่มพัฒนาเพื่อเข้าใจปัญหา และ / หรือปัญหาการเปลี่ยนแปลงยิ่งคุณพัฒนา
Evan Plaice

158

คนฉลาดฉลาดกว่าฉันเสมอ

ฉันสามารถเอาชนะตัวเองได้จริง ๆ เมื่อฉันทำผิดพลาดและมักจะถูกบอกเลิกเพราะตัวเองเลิก ฉันเคยเงยหน้าขึ้นมาด้วยความหวาดกลัวต่อนักพัฒนาจำนวนมากและมักจะคิดว่าเนื่องจากพวกเขารู้มากกว่าฉันในXพวกเขาจึงรู้มากกว่าฉัน

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

คุณธรรมของเรื่องราว: อย่าประมาทสิ่งที่คุณสามารถนำไปไว้ที่โต๊ะ


สิ่งที่ดี! ฉันกำลังทำงานกับเพื่อนร่วมงานที่รู้จักการพัฒนา NET เป็นอย่างมาก เอาฉันบางเวลาที่จะตระหนักว่าผมดีกว่าที่การทำความเข้าใจสิ่งที่เป็นความต้องการของลูกค้า
Treb

58
และในมืออื่น ๆ ที่ฉันรู้มากกว่าคนอื่น ปรากฎว่าพวกเขาเพิ่งรู้สิ่งที่แตกต่าง คุณธรรมอื่น ๆ : อย่าดูถูกดูแคลนสิ่งที่คนอื่นสามารถนำมาให้โต๊ะ
วันพฤหัสบดีที่

1
นี่คือสิ่งเก่าแก่ที่ "จงทำเพื่อผู้อื่น" อีกครั้ง ... ฉันกำลังสร้างวลีใหม่: เทคโนโลยีป่อง ~ สถานะของความรู้สึกเหนือกว่าเพราะคุณรู้อะไรบางอย่างและทำผิดพลาดที่ทำให้ทุกคนรู้ @seealso: SmartAss
corlettk

1
สังเกตที่ยอดเยี่ยม - รุ่นของฉันเป็นลบมากขึ้น "ทุกคนไม่โง่ตอนนี้แล้ว" ค่อนข้างเกี่ยวข้องกับ "ไม่พลิก bozo บิต"
peterchen

2
คุณจะต้องกังวลเมื่อมีคนโง่จะฉลาดกว่าคุณ
Brad Gilbert

131

เป็นเวลานานที่สุดที่ฉันคิดว่าการเขียนโปรแกรมไม่ดีเป็นสิ่งที่เกิดขึ้นที่ชายขอบ .. การทำสิ่งต่าง ๆ อย่างถูกต้องเป็นบรรทัดฐาน ฉันไม่ได้ไร้เดียงสาดังนั้นวันนี้


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

2
โดยสิ้นเชิง ฉันได้ไปจาก "ไม่เคยเกิดขึ้น" ถึง "ไม่เคยเกิดขึ้นยกเว้นในงานนี้ " ถึง "ทุกที่มีรหัสไม่ดี"
Ryan Lundy

1
การแฮ็คเป็นสิ่งปกติ วิศวกรรมเป็นขอบเขตของความสามารถอย่างแท้จริง หากเคยพบวิศวกรซอฟต์แวร์ฉันจะแจ้งให้คุณทราบ
corlettk

3
@corlettk: คุณหมายถึงการเข้ารหัสลิงเป็นบรรทัดฐานใช่มั้ย? แฮ็กเป็นศิลปะระดับสูงของศิลปะใจคุณว่าฉันไกลห่างไกลจากการบรรลุ
hasen

2
@Hasen: ไม่การแฮ็คเป็นการเปรียบเทียบกับการใช้ขวานไปที่ต้นไม้อย่างไร้ความปราณีสกัดชิ้นเล็ก ๆ ในความตื่นตระหนกอย่างบ้าคลั่งที่ไม่มีแผนจริงและสร้างความยุ่งเหยิงอันยิ่งใหญ่จนต้นไม้ล้มลงบนศีรษะของคุณ "แฮ็ค" คือ "ผู้สร้างงานที่น่าเบื่อและปานกลางโดยหวังว่าจะได้รับความสำเร็จในเชิงพาณิชย์" ทำไมเขตข้อมูลคอมพิวเตอร์จึงเปลี่ยน "แฮ็ค" ให้หมายถึง "ฝีมือ" ฉันจะไม่มีทางรู้
Lawrence Dol

113

ฉันคิดว่าฉันควรจะก้าวไปสู่การเป็นนามธรรมมากที่สุด ฉันโดนหัวเมเจอร์ด้วยสิ่งนี้เพราะฟังก์ชั่นเล็ก ๆ น้อย ๆ พันกันมากเกินไป

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

ดังนั้นผมจึงย้ายจากการพัฒนากรอบการทำงานที่กฎพวกเขาทั้งหมดเพื่อให้ตัวอย่างของการทำงานที่ได้งานทำ ไม่เคยมองย้อนกลับไปยกเว้นเมื่อฉันคิดถึงเวลาที่ฉันคิดอย่างไร้เดียงสาว่าฉันจะเป็นผู้พัฒนาสิ่งที่ยิ่งใหญ่ต่อไป


26
Decoupled = Abstraction ที่แท้จริง บทคัดย่อเพื่อประโยชน์ของตัวเองคือ ... การเพิ่มประสิทธิภาพก่อนวัยอันควร
Jared Updike

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

5
นามธรรมและการวางนัยทั่วไปเป็นเครื่องมือที่ทรงพลังใช้ในการสรุปกรณีการใช้เชิงนามธรรมด้วยการใช้งานเพียงครั้งเดียว สิ่งที่ตลกคือว่าเมื่อใดก็ตามที่มีความจำเป็นในการเปลี่ยนแปลงการดำเนินการที่เป็นนามธรรมและภาพรวมมีการเปลี่ยนแปลงมากเกินไป ...
KarlP

ฉันเห็นด้วยกับ Jared โดยสิ้นเชิง ... ถ้าคุณจัดการเพื่อ "ง่ายและแยกชิ้นส่วน" คุณได้บรรลุสิ่งที่เป็นนามธรรมอย่างแท้จริง ถ้าคุณไม่แยกสิ่งต่าง ๆ ออกเป็นส่วนต่อประสานและโรงงานเป็นต้น ... มันจะง่ายขนาดนี้ได้อย่างไรถ้าคุณลบ "if type =" ออกทั้งหมดแล้วทำเช่นนี้หรือถ้าประเภทนั้นจะทำอย่างอื่นรหัส "?
ริชาร์ดแอนโธนี Hein

กันที่นี่ ฉันคิดว่าฉันเรียนรู้เกี่ยวกับสิ่งที่เป็นนามธรรมก่อนที่จะทำสปาเก็ตตี้โค้ดจำนวนมาก พวกเขาควรสอนวิธีทำให้เสร็จแม้ว่ารหัสนั้นจะเป็นสปาเก็ตตี้แล้วก็สอนเราเกี่ยวกับ OO และนามธรรม
hasen

103

ผู้หญิงที่พบว่านักเขียนโปรแกรมคอมพิวเตอร์เซ็กซี่ ...


70
รอสักครู่???
Çağdaş Tekin

4
เขาเขาเขาเขา .. โอเคฉันกำลังมองหาบางสิ่งบางอย่างที่จะทำให้ฉันยิ้มได้ตลอดทั้งวัน ฉันคิดว่าฉันเจอแล้ว !!! :)
OscarRyz

17
"Ooh, baby! Yeah, พูดว่า 'if' - โยนข้อยกเว้นบางส่วนให้ฉัน .. ใช่คุณรู้ว่าฉันต้องการมันได้อย่างไร": P
cwap

5
อะไร? โปรแกรมเมอร์รวยไหม? เรื่องนี้เกิดขึ้นเมื่อไหร่?
Filip Navara

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

100

ซึ่งคุณภาพของซอฟต์แวร์จะนำไปสู่การขายที่มากขึ้น บางครั้งก็ไม่ แต่ไม่เสมอไป


37
ขายซอฟต์แวร์หรือไม่ นั่นก็คือปี 1999
bzlm

ตอนนี้เว็บไซต์ที่สมัครเป็นสมาชิกจำนวนมาก adays ...
cgp

11
Microsoft แน่ใจว่าทำการฆ่ามัน
บิลมาร์ติน

ต้องรักคนนี้จริง ๆ
ดร. ชั่วร้าย

18
ฉันหวังว่าการปรับปรุงคุณภาพ / ประสิทธิภาพของซอฟต์แวร์ของเราจะนับเป็นฟีเจอร์
Tom Leys

82

ว่าทุกภาษา (ส่วนใหญ่) สร้างขึ้นเท่ากับ

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

การเลือกภาษาที่เหมาะสมสำหรับงานมีความสำคัญ / สำคัญเท่ากับการตัดสินใจโครงการอื่น ๆ ที่ทำ


13
ฉันรู้สึกว่าการเลือกห้องสมุดที่เหมาะสมเป็นสิ่งที่สำคัญ มันเกิดขึ้นเพียงเพื่อมักจะมีการติดต่อ 1 ต่อ 1 ระหว่างภาษาและห้องสมุด ...
เควิน Montrose

7
แต่ถ้าภาษาการเขียนโปรแกรมสองภาษาทัวริงสมบูรณ์ทั้งสองจะแตกต่างกันอย่างไร คุณสามารถเขียนโปรแกรมในภาษาใดก็ได้! ;)
Bill the Lizard

8
ฉันไม่เห็นด้วยการตัดสินใจว่าจะใช้ภาษาใดมีความสำคัญน้อยกว่าใครจะนำโครงการไปใช้จริง เป็นเพียงตัวอย่างหนึ่งของการตัดสินใจที่สำคัญอื่น ๆ อีกมากมาย
Boris Terzic

13
BrainFu ** มีความสมบูรณ์แบบเหมือนงูเหลือม
hasen

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

81

นั่นคืออัตราส่วนความคิดเห็น / รหัสขนาดใหญ่เป็นสิ่งที่ดี

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


1
ผมเห็นด้วยในรหัสจริง ... ไม่รวมความคิดเห็น Javadoc (หรือเทียบเท่า)
corlettk

11
+1 ไม่ได้รับฉันเริ่มต้นในบทความที่ผมใช้ในการเขียนฟังก์ชั่นสำหรับ 10 สาย
WDS

หากต้องการเพิ่มสิ่งนี้คำสั่ง assert () จะดีกว่าการบันทึกเงื่อนไข / postcondition สัญญารหัส. NET 4 สามารถเปลี่ยนเป็นเอกสารได้โดยอัตโนมัติเช่นกัน!
Robert Fraser

66

การเขียนโปรแกรมนั้นเป็นไปไม่ได้

ไม่ได้ล้อเล่นผมมักจะคิดว่าการเขียนโปรแกรมเป็นบางสิ่งที่เป็นไปไม่ได้ที่จะเรียนรู้และฉันมักจะอยู่ห่างจากมัน และเมื่อผมได้รับรหัสที่อยู่ใกล้ผมไม่เคยเข้าใจมัน

แล้ววันหนึ่งฉันก็นั่งลงและอ่านบทเรียนพื้นฐานสำหรับผู้เริ่มต้นและทำงานจากที่นั่น และวันนี้ฉันทำงานเป็นโปรแกรมเมอร์และฉันรักทุกนาที

เพื่อเพิ่มฉันไม่คิดว่าการเขียนโปรแกรมเป็นเรื่องง่ายมันเป็นความท้าทายและฉันรักการเรียนรู้มากขึ้นและไม่มีอะไรสนุกไปกว่าการแก้ปัญหาการเขียนโปรแกรมบางอย่าง


7
สาธุ! แต่เดี๋ยวก่อนอย่าประกาศมุมมองนี้จากหลังคา เราไม่ต้องการให้ทุกคนที่จะรู้ว่าการเขียนโปรแกรมเป็นเรื่องสนุกตอนนี้เราทำ? ;); P
Peter Perháč

9
MasterPeter: มันจะให้อาหารสัตว์มากขึ้นสำหรับเราเพื่อเพิ่มตัวแทนของเราเมื่อพวกเขามาที่นี่เพื่อถามคำถาม
TheTXI

4
ผมจะบอกว่าการเขียนโปรแกรมเป็นเรื่องยากที่จะทำ อย่างไรก็ตามเป็นไปได้ซึ่งดูเหมือนจะเป็นประเด็นของคุณ
Steve S

4
@Olafur: ทำไมคุณต้องการให้คำถามเป็นวิกิ แต่ไม่ใช่คำตอบของคุณ?
gnovice

2
นี่สะท้อนประสบการณ์ของฉันอย่างแน่นอน ฉันหวังว่าฉันต้องการเริ่มต้นเร็วขณะนี้: P
Skilldrick

65

"On Error Resume Next" เป็นชนิดของการจัดการข้อผิดพลาดบางอย่าง


6
ฉันรู้สึกว่าคุณ ... แต่ใน vbscript (esp. asp) มันเป็นตัวเลือก "การจัดการข้อผิดพลาด" เท่านั้นรวมกับการตรวจสอบอย่างรอบคอบว่ามีข้อผิดพลาดเกิดขึ้นจริงหรือไม่และการอธิษฐานในปริมาณที่เหมาะสม
flatline

2
ใช่ ... มันเป็นอะไรบางอย่าง ... เป็นเพียงแค่ชนิดที่เรายินดีที่จะได้รับจาก
Matthew Whited

6
ดี?! แต่มันคือ. คุณเริ่มบล็อกการจัดการข้อผิดพลาดด้วย On Error Resume ต่อไปลองอะไรแล้วถ้า (err.number <> 0) แล้ว
jpinto3912

นี่คือ vbscript ที่เทียบเท่ากับลอง catch หรือไม่?
James

-1: เป็นการจัดการข้อผิดพลาดชนิดหนึ่ง มันไม่ได้สวยหรูขนาดนั้น
JohnFx

64

ซอฟต์แวร์การเขียนโปรแกรมนั้นต้องการรากฐานที่แข็งแกร่งในวิชาคณิตศาสตร์ที่สูงขึ้น

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

สิบปีต่อมาและฉันมีเพียงครั้งเดียวต้องทำอะไรก็ตามที่เกรดแปดไม่สามารถ


5
จริงแท้แน่นอน. ในกรณีส่วนใหญ่คุณไม่จำเป็นต้องเป็นผู้เชี่ยวชาญทางคณิตศาสตร์ ครั้งเดียวที่ฉันต้องรู้คณิตศาสตร์ขั้นสูงจริง ๆ คือตอนที่ฉันกำลังเขียนโปรแกรม 3D เป็นงานอดิเรก ในความเป็นจริงมันเป็นจริงการเขียนโปรแกรม 3 มิติในช่วงโรงเรียนมัธยมที่เป็นแรงบันดาลใจให้ฉันให้ความสนใจที่ดีขึ้นในชั้นเรียนตรีโกณมิติและพรี - แคล นอกเหนือจากนั้นคณิตศาสตร์พื้นฐานมากมักเป็นสิ่งที่คุณต้องการ
Steve Wortham

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

12
ฉันคิดว่าการเน้นเรื่องคณิตศาสตร์คือการสอนทักษะการคิดอย่างมีวิจารณญาณและการแก้ปัญหาไม่ใช่สิ่งที่คุณจะใช้ในการเขียนโปรแกรมคอมพิวเตอร์ทุกวัน
Zack

14
ชนิดของนามธรรมที่คุณต้องเข้าใจคณิตศาสตร์ขั้นสูงคล้ายกับนามธรรมที่คุณต้องการสร้างซอฟต์แวร์
OscarRyz

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

63

การเพิ่มประสิทธิภาพนั้น == การเขียนใหม่ในภาษาแอสเซมบลี

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


8
Peek และทักทายเป็นเพื่อนของคุณ :)
แมทธิว Whited

4
ทะลึ่ง! พูดกับผู้พิพากษา!
Shalom Craimer

1
นี่คือที่ทฤษฎีความซับซ้อนมาใน. สภาคือการเพิ่มประสิทธิภาพโดยทั่วไปไมโคร การทำให้อัลกอริทึมของคุณซับซ้อนน้อยลงเมื่อได้รับความเร็ว
PeteT

@scraimer: แฟนซีเห็นคุณที่นี่ฉันไม่เคยคาดคิดเลย ;-)
Robert S. Barnes

@ Matthew - "Peek and Poke เป็นเพื่อนของคุณ :)": ** อิจฉามากฉันไม่ได้เขียนก่อนเลย
FastAl

63
  • ที่ผู้บริหารของ บริษัท ใส่ใจเกี่ยวกับคุณภาพของรหัส
  • เส้นที่น้อยลงนั้นดีกว่า

2
พวกเขาสนใจ แต่คุณต้องรวมทักษะศิลปินกับทักษะของผู้ปฏิบัติงาน ทุกชิ้นของ algoritm ก็เป็นงานศิลปะด้วยเช่นกัน บางส่วนจะถูก plumpering ดังนั้นจึงใช้ "น้อยกว่า" จำกฎ 80/20 เก่า 80% ของโปรแกรมใช้ 20% ของเวลา ดังนั้นมุ่งเน้นไป 80% ในวันที่ 20% ของรหัสและทำให้ชิ้นที่แท้จริงของศิลปะ! : OP
BerggreenDK

71
เส้นน้อยลงจะดีกว่า! ส่วนหนึ่งของเหตุผลที่ฉันไม่ชอบภาษาจาวาเพราะการทำอะไรต้องใช้โค้ดหลายบรรทัด บรรทัดที่น้อยลงของรหัสหมายความว่าการเปลี่ยนรหัสของคุณง่ายขึ้น
Claudiu

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

2
ยกเว้นเมื่อผู้คนใช้ความคิดที่ "น้อยกว่าเส้นดีกว่า" ไปไกลด้วยวิธีการที่ถูกล่ามโซ่เรียก 7 ลึกเพื่อให้เมื่อหนึ่งในพวกเขาพ่นตัวชี้โมฆะคุณไม่มีความคิดว่ามันเป็น หรือพวกเขารวมตัวจำนวนมากดังนั้นการดำเนินการเป็นหนึ่งในสายว่ามันเป็น 150 ตัวอักษรและดำเนินการ 4 การดำเนินงาน นี้จะทำให้มันทั้งยากที่จะอ่านและยากที่จะแก้ปัญหา แต่ไม่ได้เร็วขึ้นหรือไม่ก็ใช้หน่วยความจำน้อยลงในช่วงการดำเนินการ
Trampas Kirk

17
หากบรรทัดของคุณลงท้ายด้วย))))) และคุณไม่ได้เขียน Lisp คุณมีจำนวนบรรทัดน้อยเกินไป

58

ฉันจะบอกว่าการจัดเก็บองค์ประกอบปีของวันที่เป็นตัวเลข 2 หลักเป็นข้อสันนิษฐานที่ทำให้นักพัฒนาทั้งรุ่น เงินที่ถูกเป่าบนY2Kนั้นค่อนข้างน่ากลัว


1
นี่คือคำตอบเดียวที่ฉันจะ upvote แม้ว่ามันจะเป็น CW ดังนั้นมันไม่ได้เรื่อง ...
แดน Rosenstark

4
IIRC บางระบบกลับมาในยุค 60 และ 70 อาจใช้เพียงหนึ่งหลักเพราะใช้หน่วยความจำน้อย ฉันเคยเห็นรูปแบบกระดาษที่พิมพ์ "196_" และ "197_" ไว้ล่วงหน้า
บาง

3
ฉันยังคงเห็นแบบฟอร์มที่มี 200_ และน่าจะมีบางอย่างที่พิมพ์ 201_
มัจฉา

5
ส่วนที่น่าเศร้าคือ ... Unix จะมีรอบที่สองในปี 2038
Evan Plaice

4
@Billy เพียงเพราะการเปลี่ยนแปลงสถาปัตยกรรมเครื่องไม่ได้หมายความว่ารูปแบบข้อมูลจะ การจัดเก็บตัวเลข 2 หลักของการแก้ปัญหาในรูปแบบ int จะทำให้ไบต์ (8bit) รูปแบบวันที่และยังมีผลกระทบต่อตันของเครื่องสถาปัตยกรรมฮาร์ดแวร์ 32bit ใน 2k นี่เป็นอีกตัวอย่างหนึ่งของสาเหตุที่คุณไม่ปล่อยให้ฮาร์ดแวร์ระดับต่ำระบุรูปแบบข้อมูล พวกเขาเพนนีนิดหน่อยด้วยความรู้ว่าจะมี SNAFU ที่กำหนดไว้ในอนาคตอันห่างไกล
Evan Plaice

57

สิ่งอื่นใดนอกเหนือจากการแทรก / การเรียงลำดับฟองนั้นเป็นเพียงแค่เวทมนตร์มืด


ฮ่าฮ่าฉันชอบอันนี้เพราะมันกระทบกับบ้านมาก เรียงในเร็วกว่าเวลา n-Squared ?? Unpossible!
รอสส์

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

74
ผมนักวิจัยในการเรียงลำดับขั้นตอนวิธี! และพวกเขายังรู้สึกเหมือนเวทมนต์มืด
SPWorley

14
ฉันเคยมีรหัสบรรทัดหนึ่งในโปรแกรมของฉันที่มีความยาวและซับซ้อนและฉันไม่รู้สึกอยากเลิกหรืออธิบาย (มันเป็นสูตรแสงที่ซับซ้อน) ดังนั้นฉันจึงใส่มันทั้งหมดในบรรทัดเดียวและ #define ' d มันจะ DARK_MAGICK และแสดงความคิดเห็นเพียง แต่เป็นคำเตือนกับพยายามที่จะคลี่คลายความลึกลับของเวทมนตร์มืด
อเล็กซ์

2
Bogosort เป็นสิ่งที่ลึกลับที่สุดในบรรดาพวกเขาทั้งหมด
Alex Beardsley

50

XML นั้นจะเป็นรูปแบบข้อมูลที่ใช้งานร่วมกันได้อย่างแท้จริงและมนุษย์สามารถอ่านได้


7
XML ไม่ใช่ยาครอบจักรวาล แต่ฉันไม่ต้องการย้อนกลับไปในวันที่ฉันเห็นแอปพลิเคชันที่พยายามบีบข้อมูลเชิงสัมพันธ์เป็นไฟล์ csv เดียว
Tony Edgecombe

4
มันเป็นไวยากรณ์ระหว่างทำงานได้ไม่ต้องสงสัยเลยว่า เพียงแค่ว่าไวยากรณ์มักจะเป็นสิ่งสำคัญที่สุดของการแก้ปัญหาใด ๆ
Simon Gibbs

2
+1 คุณสามารถเพิ่มสิ่งที่อยากได้ขนาดเล็กและรวดเร็วได้เช่นกัน
MarkJ

1
จริง แต่การปรับปรุง csv และความยาวคงที่โดยไม่มีเอกสารประกอบที่คุณเมา
PeteT

7
ฉันชอบ XML สำหรับมาตรฐานที่นำมาสู่รูปแบบข้อมูลและสำหรับการจัดการการเข้ารหัสอักขระอย่างถูกต้อง ฉันเกลียดสิ่งที่ทำในบางครั้งด้วย XML อย่างไรก็ตาม
Joachim Sauer

48

C ++ นั้นดีกว่าภาษาอื่นทั้งหมด

สิ่งนี้ฉันได้รับจากเพื่อนสองสามปีข้างหน้าของฉันในวิทยาลัย ฉันเก็บมันไว้กับฉันเป็นเวลานานอย่างน่าอาย (ตอนนี้ฉันเขิน) หลังจากทำงานกับมันมา 2 ปีหรือมากกว่านั้นก่อนที่ฉันจะเห็นรอยแตกของสิ่งที่พวกเขาเป็น

ไม่มีใคร - และไม่มีอะไร - สมบูรณ์แบบมีห้องสำหรับการปรับปรุงอยู่เสมอ


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

@JP: ฉันมีความสุขกับตัวเลือกของฉันของคำ :)
Binary Worrier

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

7
ฉันคิดเสมอว่า C ++ นั้นแย่กว่า ANSI C ที่ตรงไปตรงมาเพียงเพราะปัญหาที่ฉันเห็นโปรแกรมเมอร์ C ++ เข้าไปนั้นมีความซับซ้อนมากกว่าปัญหาที่ฉันเคยเห็นโปรแกรมเมอร์ C เข้าไป
Nosredna

1
ที่จริงแล้วภาษาที่ดีกว่าภาษาอื่นคือ Common LISP C ++ นั้นก็ไม่ได้เลวร้าย
David Thornley

47

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


24
ผมคิดว่าที่เรียกว่าชีวิต
วัน Robin วันที่

9
อืม .. ถึงเวลาที่คุณจะประกันตัว บริษัท นั้น ..
jpinto3912

8
@ jpinto3912: เลขที่เพราะ บริษัท ต่อไปนอกจากนี้ยังจะเป็นส่วนหนึ่งของชีวิต (ดูความคิดเห็นก่อนหน้า)
Treb

42

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

รูปแบบการออกแบบรู้สึกเหมือนเวทมนตร์ คุณสามารถทำสิ่งที่เรียบร้อยจริงๆ ต่อมาฉันค้นพบการเขียนโปรแกรมที่ใช้งานได้ (ผ่าน Mozart / Oz, OCaml, ภายหลัง Scala, Haskell และ Clojure) จากนั้นฉันเข้าใจว่ารูปแบบจำนวนมากเป็นเพียงแค่ต้นแบบสำเร็จรูปหรือความซับซ้อนเพิ่มเติมเนื่องจากภาษานั้นไม่สามารถแสดงออกได้เพียงพอ

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


"หลายรูปแบบเป็นเพียงสำเร็จรูปหรือความซับซ้อนเพิ่มเติมเนื่องจากภาษานั้นไม่ได้มีความหมายเพียงพอ" การแปลความหมายเป็นเพียงรหัสสำเร็จรูปที่เดินสายเข้าไปในภาษา
ไม่ทราบ

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

38

ในช่วงสองสามปีแรกที่ฉันเขียนโปรแกรมฉันไม่ได้รู้ว่า 1 Kbyte นั้นมี 1024 ไบต์ทางเทคนิคไม่ใช่ 1,000 ฉันมักสับสนเล็กน้อยจากความจริงที่ว่าขนาดไฟล์ข้อมูลของฉันดูเหมือนเล็กน้อยจากที่ฉันคาดไว้ เป็น


114
ผู้ผลิตฮาร์ดไดรฟ์ยังคงไม่ติด ...
Michael Myers

10
@mmyers ฉันคิดว่าคุณหมายถึงนักการตลาดฮาร์ดไดรฟ์ใช่มั้ย หรือไดรฟ์ที่สร้างขึ้นจริงเช่นนั้น?
Instantsoup

16
เฮ้หยุดคิคิเกลียดชัง MeBi และ KiBi เป็นอย่างน้อย unbambiguobus
bzlm

21
Kilo หมายถึง 1,000, Mega หมายถึง 1000000, Giga หมายถึง 1000000000 มันเป็นผู้ผลิต RAM และ OS ที่เข้าใจผิดไม่ใช่ผู้ผลิตไดรฟ์
Mark Ransom

39
ไม่มีใครจะทำมัน? อย่างจริงจัง? โอเคฉันจะทำ ... xkcd.com/394
Erik Forbes

36

ตรวจสอบสภาพที่ชอบ:

if (condition1 && condition2 && condition3)

จะดำเนินการในการสั่งซื้อที่ไม่ระบุ ...


15
ภาษาอะไร ภาษาเช่น C / C ++, Java และ Python รับประกันว่าเงื่อนไขจะได้รับการประเมินจากซ้ายไปขวาและการประเมินนั้นจะหยุดที่เงื่อนไขแรกที่ส่งคืนเท็จ เป็นส่วนหนึ่งของข้อมูลจำเพาะของ Spam ฉันคิดว่าภาษาอื่น ๆ ส่วนใหญ่รับประกันแบบเดียวกัน
Clint Miller

44
@Clint: ใช่ดังนั้น "ที่กลายเป็นไม่ถูกต้อง"
bzlm

ใช่คนนี้เป็นเย็น มันทำให้สิ่ง wrint เช่นถ้า (myList = null && myList.Count> = 0) {ทำสิ่งที่ ();} มากขึ้น
แซค

4
จริงอันนี้ขึ้นอยู่กับภาษาและจะมีการประเมินและเงื่อนไขทั้งหมด (ไม่ใช่ทางลัด) และผมเคยเห็นหลายคนใช้และ (&) ใน VB แทน andalso (&&)
ลูคัส

2
. . . ที่จริงแล้วมันจะผิดพลาดใน VB.net เช่นกันเว้นแต่ว่าคุณจะใช้ความคิดเห็นของ Andas อีกครั้งลูคัส
Binary Worrier

35

ว่าการเขียนโปรแกรมของฉันจะเร็วขึ้นและดีขึ้นถ้าฉันทำมันคนเดียว


แต่มันลาดเทรับเป็นที่น่าเกลียดเป็น Pair- โปรแกรม :-) ยกเว้นบางทีรหัสของคุณ
ไข่

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