ระบบสามารถขับเคลื่อนข้อมูลได้ 100% หรือไม่?


44

หัวหน้าคนใหม่ของฉันทำงานโครงการนี้มาหลายปีแล้ว ฉันเคยมาที่นี่เพียงไม่กี่สัปดาห์ แต่ฉันไม่แน่ใจว่าเป็นไปได้ เขาต้องการออกแบบระบบที่ "ขับเคลื่อนข้อมูล 100%"

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

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

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

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

แอพพลิเคชั่นขับเคลื่อนข้อมูล 100% นั้นเป็นไปได้หรือไม่?


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

6
ฉันคิดว่าคุณต้องกำหนดสิ่งที่คุณหมายถึงโดย 'ขับเคลื่อนข้อมูล' ในวิธีที่เฉพาะเจาะจงมากขึ้น
GrandmasterB

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

20
แน่นอนคุณสามารถทำได้! ข้อมูลถูกเก็บไว้เป็นไฟล์ต้นฉบับ Java บนระบบไฟล์ เรารวบรวมและปรับใช้แล้วคุณก็ไป ความยืดหยุ่น 100% ขับเคลื่อนด้วยข้อมูล 100%
Jeremy Stein

6
@ JeremyStein เอาชนะฉันไป ฉันจะบอกว่าข้อมูลของฉันถูกเก็บไว้ในการโค่นล้มและการเปลี่ยนแปลง 'การกำหนดค่า' ของฉันจะถูกนำไปใช้ผ่านระบบการรวมอย่างต่อเนื่องและกระบวนการปรับใช้อื่น ๆ
Mr.Mindor

คำตอบ:


46

หัวหน้าของคุณควรอ่านงานชิ้นนี้: Bad Carma: โครงการ "Vision" ซึ่งเป็นเรื่องราวที่ควรระวังเกี่ยวกับเอฟเฟกต์แพลตฟอร์มด้านในหรือเอฟเฟกต์ระบบที่สอง

บทคัดย่อ

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

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

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

  • รายการสั่งซื้อและสินค้าคงคลัง
  • ฝ่ายบริการลูกค้าช่วยเหลือ
  • บัญชีแยกประเภททั่วไปบัญชีลูกหนี้การเรียกเก็บเงินและบัญชีเจ้าหนี้

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

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

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

ดูสิ่งนี้ด้วย

http://en.wikipedia.org/wiki/Inner-platform_effect


3
+1 เอฟเฟกต์แพลตฟอร์มภายใน ฉันคิดว่า TDWTF นี้สรุปได้เป็นอย่างดี: thedailywtf.com/Articles/The_Inner-Platform_Effect.aspx

4
เป็นเรื่องตลกเมื่อคนไม่สามารถเห็นค่าใช้จ่ายในการเขียนโค้ดได้น้อยกว่าการสร้างแพลตฟอร์มทั้งหมด
brianfeucht

9
@brianfeucht: ความคิดของแพลตฟอร์มที่สามารถกำหนดค่าได้อย่างไม่มีที่สิ้นสุดมีเสน่ห์
Robert Harvey

1
เอฟเฟกต์แพลตฟอร์มด้านในทำให้ฉันนึกถึงห้องสมุด Google เช่น Guava ซึ่งแทนที่จะใช้ถ้ามีคำสั่งรหัสก็เต็มไปด้วยอินสแตนซ์ของเพรดิเคตมากมาย นั่นเป็นเพียงที่น่ากลัว
ลุค 1985

3
@ RobertHarvey และสนุกกับการสร้าง เพียงตราบใดที่ฉันไม่ต้องสนับสนุนผู้ใช้;)
brianfeucht

17

คำตอบคือใช่มันเป็นไปได้ที่จะสร้างระบบที่ขับเคลื่อนด้วยข้อมูลอย่างสมบูรณ์และใช่มันเป็นความคิดที่แย่จริงๆ

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

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

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

คุณยังใช้ภาษาที่มีความสามารถในการเขียนโค้ดการดำเนินการทางตรรกะ คำแนะนำของฉันคือการใช้ภาษาที่มีอยู่เช่น lua หรือ Python คุณฝังส่วนของรหัสนี้ในทุกที่ที่ต้องการการดำเนินการทางตรรกะ

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

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


2
เขียนดี SAP (ระบบ ERP) เป็นตัวอย่างคลาสสิกของระบบดังกล่าว คุณไม่ได้โปรแกรมในมันคุณ "กำหนดค่า" มัน ซึ่งเป็นเรื่องซับซ้อนมากที่ต้องทำทุกอย่างให้สำเร็จเพื่อสร้างอุตสาหกรรมการให้คำปรึกษาโดยรอบ
Tonny

@Tonny: ขอบคุณ ฉันไม่มีประสบการณ์โดยตรงกับ SAP แต่ฉันเข้าใจว่า SAP / R3 และ ABAP ใกล้เคียงกับคำอธิบายนี้และเป็นตัวกำเนิดที่สำคัญของเรื่องราวสงคราม: ผิดปกติและงบประมาณใช้ไปกี่ครั้ง ยังทำให้ บริษัท มีเงินมาก
david.pfx

ในฐานะที่เป็นคนที่มีประสบการณ์ตรงจาก SAP ฉันแค่อยากจะแสดงความคิดเห็น ... (ใครบางคนสามารถแสดงวิธีการลี้ภัยในขณะนี้ได้ไหม)
Shawty

6

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

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

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

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

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

ดังนั้นหากคุณกำลังจะเริ่มดำเนินการในระบบที่ขับเคลื่อนด้วยข้อมูล 100% ซึ่งสามารถทำอะไรก็ได้ที่ให้ข้อมูลที่ถูกต้องคุณมีสองคำถามที่จะถามตัวเอง:

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

บางครั้งคำตอบคือใช่และคุณเขียนภาษาเฉพาะโดเมนบางชนิด หรือแม้แต่ภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปหากคุณเป็น Sun / Microsoft / Stroustrup / van Rossum / อื่น ๆ อีกมากมาย บางครั้งคำตอบคือไม่และคุณมีเอฟเฟ็กต์ "แพลตฟอร์มภายใน" - หลังจากความพยายามและการทดลองและข้อผิดพลาดมากมายคุณก็จบลงด้วยบางสิ่ง หากคุณโชคดีมันด้อยกว่าภาษาการเขียนโปรแกรมเพียงเล็กน้อยเท่านั้นและใช้งานง่ายกว่า

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

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


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

4

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

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

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


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

4

คุณหมายถึงหัวหน้าของคุณต้องการให้คุณเขียนสิ่งนี้:

[
  {
    "statement": "Assignment ",
    "variable": "App",
    "value": {
      "type": "Function",
      "arguments": [],
      "function-body": [
        {}
      ]
    }
  },
  {
    "statement": "Assignment",
    "variable": "App.prototype.action",
    "value": {
      "type": "Function",
      "arguments": [
        "data"
      ],
      "function-body": [
        {
          "statement": "Call",
          "function-name": "console.log",
          "arguments": [
            "data"
          ]
        }
      ]
    }
  }
]

เพื่อสร้างสิ่งนี้:

var App = function () {};
App.prototype.action = function ( data ) {
    console.log( data );
}

คนแรกคือJSONและเป็นคนที่สองคือJavaScript

ชี้แจง

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

แอพพลิเคชั่นขับเคลื่อนข้อมูล 100% นั้นเป็นไปได้หรือไม่?

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


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

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

0

คุณสามารถยืนยันตะล่อมผมคิดว่าโปรแกรมเว็บเบราเซอร์ใด ๆ ที่อาจได้รับการพิจารณาข้อมูล 100% ขับเคลื่อน1

แน่นอนว่าไม่ได้ทำให้ง่ายขึ้นหรือง่ายขึ้นในการสร้างแอปพลิเคชันบนเว็บในความเป็นจริงมันทำให้พวกเขายากขึ้นมาก

บอกหัวหน้าของคุณว่าเขาสร้างเว็บเบราว์เซอร์ขึ้นมาใหม่และในที่สุดเขาจะต้องสร้างใหม่ JavaScript เพื่อสร้างสิ่งที่ซับซ้อนพอสมควร

1ดีถ้าคุณไม่สนใจปลั๊กอิน, JavaScript และHTML5


-1

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

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

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


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