มีภาษาระดับสูงพิเศษออกไปไหม [ปิด]


20

ในอดีต HLL มีลักษณะคล้าย C, Fortran หรือ Pascal และ VHLL เป็นอะไรที่เหมือน Ruby หรือ Python ฉันคุ้นเคยกับคำศัพท์ 4GL, 5GL, DSL และ LOP และผู้ที่ไม่ควรอ่าน Wikipedia สำหรับคำจำกัดความ ฉันกำลังมองหา UHLL

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

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

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

ฉันรู้ว่าภาษาเหล่านั้นบางอย่างอาจเฉพาะโดเมนและพวกเขาอาจจะน้อยกว่าความสามารถในการกำหนดค่าของแอปพลิเคชันขนาดใหญ่และมีความสามารถ สเปรดชีต Excel จัดอยู่ในหมวดหมู่นี้

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

ฉันรู้ว่าคุณสมบัติบางอย่างที่อาจอยู่ใน UHLL โดยการเปรียบเทียบกับ VHLL ฉันคาดว่าจะพบสิ่งต่อไปนี้อย่างน้อยหนึ่งอย่าง (และสามารถเพิ่มในรายการ):

  • รูปวาดของรูปแบบ GUI เป็นโปรแกรมสำหรับรูปแบบ GUI
  • ตารางที่มีแถวคอลัมน์และส่วนหัวเป็นโปรแกรมสำหรับตารางในฐานข้อมูล
  • Declarative logic บอกว่าสิ่งที่ควรทำและเมื่อใดที่ไม่มีคำสั่ง IF
  • การดำเนินการกับชุดข้อมูลโดยไม่มี FOR loops
  • การดำเนินการที่ไม่ต่อเนื่องเช่นการขับเคลื่อนข้อมูลการจับคู่รูปแบบการเดินต้นไม้

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

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

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

  • เสียงกระเพื่อมกับแมโครและความสามารถในการแก้ไขด้วยตนเอง
  • Haskell ด้วยการพึ่งพาข้อมูลและการจับคู่รูปแบบ
  • SQL ซึ่งเกี่ยวข้องกับแถวและตาราง
  • Rebol ซึ่งดูฉลาด แต่ฉันไม่เข้าใจ
  • APL (และ J) พร้อมอาร์เรย์หลายมิติและผู้ประกอบการขนาดกะทัดรัดพิเศษ
  • C # กับ LINQ
  • AWK / Perl / Python / Ruby พร้อมคอลเลคชั่นที่ยอดเยี่ยมและ regexes ในตัว

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

มีแพ็คเกจ RAD / 4GL ฉันเคยใช้:

  • dBase / Foxpro
  • Dataflex / Powerflex (ผลิตภัณฑ์ของฉัน)
  • ทางเข้า
  • PowerBuilder

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

มีกรอบ / ไลบรารีดิบ ฉันใช้ไม่กี่:

  • ทางรถไฟ
  • Java awt และ swing
  • แบบฟอร์ม Windows .NET, WPF และ ASP.NET

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

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

ดังนั้นการขจัดคู่แข่งทั้งหมดที่ฉันสามารถคิดได้ฉันหวังว่าจะมีคนอื่นที่สามารถให้ผู้สมัครที่ดีกว่าได้

มาสายแก้ไข: ฉันคิดว่าฉันมีคำตอบ: ภาษา Wolfram http://www.wolfram.com/wolfram-language/


2
@Phoshi - จุดสามจุดสุดท้ายครอบคลุมโดย SQL เช่นกัน ไม่ได้อยู่ใน DWIM (ทำในสิ่งที่ฉันหมายถึง)
kdgregory

10
รูปวาดของรูปแบบ GUI เป็นโปรแกรมสำหรับรูปแบบ GUIแน่นอน แต่รหัสที่จัดการการคลิกปุ่ม, UI รีเฟรช, ฯลฯ ... ? คุณเคยทำงานร่วมกับนักออกแบบรูปแบบของ Visual Studio หรือไม่? พวกเขายังคงเขียนโค้ดภายใต้หน้าปก แต่โดยปกติแล้วผู้พัฒนาไม่จำเป็นต้องมองมัน พวกเขาเพียงแค่พัฒนารูปแบบ "มองเห็น" ยกเว้นโค้ดที่กำหนดเองเช่นเนื้อความของตัวจัดการเหตุการณ์ ... ตารางที่มีแถวคอลัมน์และส่วนหัวเป็นโปรแกรมสำหรับตารางในฐานข้อมูลทริกเกอร์ดัชนีและข้อ จำกัด ทั้งหมดในตารางฐานข้อมูลคืออะไร
FrustratedWithFormsDesigner

3
@FrustratedWithFormsDesigner: และคุณก็เป็น ... ผิดหวัง
Robert Harvey

4
@RobertHarvey: ใช่ แต่ไม่หงุดหงิดเหมือนกับว่าฉันต้องเขียนโค้ดทั้งหมดด้วยตัวเอง ;)
FrustratedWithFormsDesigner

7
สิ่งที่สามารถเป็นภาษาระดับสูงกว่า (เช่นใน "นามธรรมที่สุด") กว่า DSL ที่เหมาะสำหรับโดเมนปัญหาเฉพาะ? และแน่นอนว่ายังมีบางภาษาที่ได้รับการออกแบบมาโดยเฉพาะสำหรับการสร้าง DSL อย่างมีประสิทธิภาพ
SK-logic

คำตอบ:


33

เกือบทุกเกณฑ์ที่คุณระบุไว้เป็นสิ่งที่ทดลองใช้แล้วในเครื่องมือ 4GL / RAD เช่น MS Access, Sybase Power Builder, Oracle Forms, Ruby-on-Rails (เป็นตัวอย่างที่ทันสมัยกว่าสำหรับ Web Apps) และอีกมากมาย (ดูWikipediaสำหรับ รายการผู้ขายที่ยาวมาก) และแน่นอนว่าการแปลความต้องการทางธุรกิจที่ค่อนข้างง่ายเป็นโปรแกรมบางประเภทสามารถทำได้อย่างรวดเร็วด้วยเครื่องมือเหล่านี้ นั่นเป็นเหตุผลที่ผู้ขายเครื่องมือ RAD ส่วนใหญ่โฆษณาผลิตภัณฑ์ของตนในแบบที่ทุกคนควรคิดว่าพวกเขาได้ประดิษฐ์ UHLL ในแง่ของคุณแล้ว

สิ่งที่จับได้คือทันทีที่คุณทิ้งความต้องการเป็น " ค่อนข้างง่าย " และทันทีที่คุณต้องบำรุงรักษาและพัฒนาโปรแกรมที่เขียนด้วยสภาพแวดล้อมเหล่านี้คุณจะสังเกตเห็นว่าคุณถึงขีด จำกัด และสังเกตเห็นข้อเสียของพวกเขาได้อย่างง่ายดาย หรือการใช้ข้อกำหนดกับพวกเขานั้นไม่ง่ายกว่า "VHLL" อื่น ๆ ที่คุณมีอยู่ในใจ IMHO มีโอกาสที่ดีที่สิ่งเหล่านี้จะฆ่าการปรับปรุงประสิทธิภาพใด ๆ ที่คุณมีในเวอร์ชัน 1.0 เมื่อไปที่เวอร์ชัน 1.1, 1.2 และ 1.3 ของโปรแกรมของคุณ

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


9
+1 relatively simpleสำหรับ ตรรกะทางธุรกิจที่เกิดขึ้นจริงมีแนวโน้มที่จะเปลี่ยนสปาเก็ตตี้อย่างรวดเร็ว
Bobson

1
+1 เมื่อคุณออกจากพื้น สำหรับฉันพวกเขามักจะชอบ "สร้างบล็อกใน 5 นาที (โดยไม่ต้องเขียนโค้ด)!" พิมพ์โฆษณา มันยอดเยี่ยมจนกระทั่งคุณต้องใช้บางสิ่งที่คล้ายกับโปรแกรมจริงและทันใดนั้นสิ่งที่คุณคิดว่าควรเป็นเรื่องง่ายไม่ใช่ บางทีพวกเขาอาจจะยอดเยี่ยมและฉันก็ไม่เข้าใจพวกเขา - แต่การตลาดทำให้มันยากที่จะเชื่อว่ามันไม่ใช่แค่เรื่องยุ่งเหยิงที่ยิ่งใหญ่กว่าที่คุณไป
BrianH

ใช่ฉันรู้. ฉันเขียนโค้ดใน 4GLs เหล่านั้นส่วนใหญ่และอื่น ๆ อีกหลายอย่าง สิ่งที่ฉันเคยใช้ปรับขนาด แต่พวกเขาทำเช่นนั้นเพราะมี HLL ที่ฝังตัวไม่ดีมากเช่น VBA และทั้งหมดมีข้อ จำกัด และในฐานะที่เป็นผลิตภัณฑ์ปิดคุณไม่สามารถเปลี่ยนข้อ จำกัด เหล่านั้นได้ ใช่ Fred Brooks ถูกต้องดังนั้น UHLL จะต้องใช้กระสุนทั้งชุด
david.pfx

ฉันเรียกสิ่งนี้ว่า "เอฟเฟกต์ Dreamweaver" UHLL เป็นเพียง abstractions ที่ไม่ธรรมดา
Charles Salvia

14

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

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

หากคุณต้องการเพิ่มผลผลิตจริง ๆ ทางออกที่ดีที่สุดของคุณน่าจะเป็นตัวแปร Lisp Clojure ทำงานบน JVM และมีพอร์ต. NET ฉันพูดแบบนี้เพราะผู้คนได้ทำไปแล้ว เครื่องมือค้นหา Orbitz ทำงานบน Lisp และ Paul Graham ดำเนินธุรกิจทั้งหมดโดยใช้ Lisp โดยอ้างว่ามันทำให้เขาได้เปรียบอย่างมีนัยสำคัญเหนือคู่แข่งของเขา (ซึ่งทุกคนใช้ Java)

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

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


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

อ่านเพิ่มเติม
ตีค่าเฉลี่ย


Linq เป็นตัวอย่างที่ดีของประเภทรหัสที่ฉันหมายถึง ฉันชอบเขียน ifs และ loops เป็น whens และเลือกทั้งหมดในบรรทัดเดียว ตัวอย่างอื่น ๆ เช่นนั้น?
david.pfx

1
@ david.pfx: C # ค่อนข้างช้าสำหรับฝ่ายนั้นและฉันพบว่ามีไวยากรณ์อยู่ข้างหลัง (ใช้คำสำคัญของ SQL แต่คำสั่งนั้นแตกต่างกันโดยที่ทุกคนใช้คำสั่ง SQL และคำหลัก / สัญลักษณ์ที่ง่ายกว่า) วิธีที่พวกเขาสามารถรวบรวมไปยัง SQL นั้นดีกว่าสิ่งที่ภาษาส่วนใหญ่สามารถทำได้
Jan Hudec

4
@ david.pfx: ภาษาที่ใช้งานได้ดีมีความเข้าใจในรายการค่อนข้างมากสามารถทำสิ่งที่ Linq ทำได้
Robert Harvey

7

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

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

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

ตัวอย่างเช่นคุณอาจลากออบเจกต์ DataStore, นักแสดง, แบบฟอร์ม, คลาสที่เกี่ยวข้องสองสามอัน (เช่นลูกค้า, ฯลฯ ), วาดเส้นเชื่อมต่อบางอย่างระหว่างวัตถุที่ใช้กราฟและเช่นนั้นและบูม: เมื่อคุณทำเสร็จแล้ว (เห็นได้ชัดว่าง่ายมาก)

แท้จริงแล้วสิ่งที่ทำคือการสร้าง GUI ที่ซับซ้อนการดำเนินการ / ตีความ UML อย่างละเอียดและจากนั้นจะรวมกับโค้ด Java / C # / VB ด้วยเอกสาร XML แบบเต็มซึ่งเก็บข้อมูลกราฟ UML และพวกเขายังใช้ / เปิดใช้งาน วิศวกรรมการเดินทางแบบไปกลับเพื่อให้คุณสามารถย้อนกลับไปมาระหว่างแบบจำลองและรหัสเพื่อให้คุณสามารถควบคุมสิ่งต่าง ๆ ได้ทั้งในระดับปรัชญาจมูกเลือดออกที่สูงมากและรหัสเฉพาะแพลตฟอร์มระดับต่ำมาก

มันคือทุกสิ่งที่คุณต้องการและอื่น ๆ อีกมากมายและคุณจะไม่ยอมเสียอะไรในการแลกเปลี่ยน! ขวา?

ทำไมทุกคนไม่ใช้มัน?!?!

... เอาล่ะดูนั่นคือสิ่งที่ สิ่งที่คุณต้องทำคือการทำเสาหินทุกอย่างเกี่ยวข้องกับชิ้นส่วนที่เคลื่อนไหวและเวทมนตร์ทั้งหมดหรือบางครั้งก็ไม่ได้รับผลกระทบจากการเปลี่ยนแปลงในสถานที่ต่าง ๆ (ใน GUI, XML, ระดับที่ต่ำกว่า) รหัส, โมเดล UML ที่สร้างขึ้นเอง / กำหนด / ดูแลในระดับโมเดลที่แตกต่างกัน)

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

และบรรทัดล่างคือ - แม้ว่าจะมีหลายล้านคนนับล้านหลั่งไหลเข้ามาในโครงการจากหลายสิบ บริษัท และชื่อใหญ่มากบางหลังคุณยังคงจบลงด้วยรหัสแบบ C ที่ชั้นปฏิบัติการที่จะต้องแก้ไขได้ตลอดเวลา เนื่องจากบางสิ่งไม่สามารถทำการแปลระหว่าง Object Oriented Class Descriptions และ UML ลงไปจนถึงระดับการเขียนโปรแกรม / เครื่องจักรและระบบอัตโนมัติไม่สามารถทำให้เสร็จสมบูรณ์ได้

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

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

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

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

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

อาจจะใช้ได้เฉพาะในองค์กรที่มีทีมงานมากกว่าพันคนและบางทีเราอาจจะยังไม่ได้อยู่ที่นั่น

ฉันไม่รู้.

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

หรือบางทีเราแค่ต้องให้อีก 20-50 ปีของการทำงานหนัก ฉันไม่ได้มองโลกในแง่ดีอีกต่อไปว่าภาษาการเขียนโปรแกรมเป็นข้อ จำกัด อีกต่อไป

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


คุณคิดว่าจะกำจัดการเข้ารหัสหรือไม่? ฉันไม่เห็นความต้องการทางธุรกิจที่จะแปลเป็นรหัสโดยตรงจนกว่าคอมพิวเตอร์จะฉลาดเท่าที่เราเป็น
david.pfx

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

'ทำไมทุกคนไม่ใช้มัน!?! "- เพราะมันให้ผลลัพธ์ที่ไม่ดีนี่คือม้าที่ถูกเฆี่ยนตีภายในระยะเวลาหนึ่งนิ้ว UML เป็นความล้มเหลว
duffymo

1

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

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

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

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


1
-1 สำหรับการตอบคำถาม "ใช่ / ไม่ใช่" โดยไม่พูดว่าใช่หรือไม่ใช่ (และไม่สนใจคำศัพท์เฉพาะในคำถามของ OP)
DougM

ที่จริงฉันคิดว่ามันถูกต้อง UHLL ไม่ได้มีไว้สำหรับการใช้งานคุณสมบัติที่มีอยู่แล้ว แต่รวมเอาไว้ในรูปแบบที่ยากเกินกว่าที่จะคิดในระดับที่ต่ำกว่า คุณรู้หรือไม่? Haskell ไม่ได้เป็นอย่างนั้น
david.pfx

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

0

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

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

ไม่มีแนวโน้มที่จะผลิตลำดับความสำคัญสำหรับการจัดอันดับและผู้พัฒนาไฟล์


1
lua จะไม่เหมาะกว่าสำหรับภาษาสำหรับการเข้ารหัสรายละเอียดระดับต่ำกว่าการเข้าถึงของ UHLL หรือไม่
david.pfx

0

ฉันคิดว่า REBOL อาจเหมาะกับเกณฑ์ทั้งหมดของคุณ คุณสามารถสร้างแอพ GUI ที่ค่อนข้างซับซ้อนในโค้ดหลายบรรทัด - อย่างไรก็ตาม "พิเศษ" ของมันคือการสร้าง DSL

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