CSS ทัวริงสมบูรณ์หรือไม่


297

CSS ไม่ได้ตราบเท่าที่ฉันรู้ว่าทัวริงสมบูรณ์ แต่ความรู้ของ CSS มี จำกัด มาก

  • CSS ทัวริงสมบูรณ์หรือไม่
  • มีร่างหรือคณะกรรมการชุดย่อยที่มีอยู่กำลังพิจารณาคุณสมบัติทางภาษาที่อาจทำให้ทัวริงสมบูรณ์หากไม่ได้ตอนนี้หรือไม่?

28
มันเสร็จเรียบร้อยแล้วถ้าคุณใช้ ie6 พวกเขาเรียกว่าการแสดงออกของ CSS และฉันทามติก็คือพวกเขาถูกทำลายและอันตรายอย่างน่ากลัว JS ฝังตัวใน CSS ...
kibibu

13
@Kibibu - Yikes! โปรดลบความคิดนั้นจากสมองของฉันก่อนที่มันจะพับลงบนตัวมันเอง
DVK

CSS เป็นไปได้อย่างไรที่ทัวริงสมบูรณ์
slaks

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

5
@SLaks: อย่าดูถูกพลังของ HTML5 / CSS3 :)
Niklas B.

คำตอบ:


385

คุณสามารถเข้ารหัสRule 110ใน CSS3 ได้ดังนั้นจึงเป็นการทำให้ทัวริงสมบูรณ์ตราบใดที่คุณพิจารณาไฟล์ HTML ที่เหมาะสมและการโต้ตอบกับผู้ใช้เพื่อเป็นส่วนหนึ่งของ“ การดำเนินการ” ของ CSS มีการใช้งานที่ดีพอสมควรและมีการใช้งานอื่นที่นี่:

body {
    -webkit-animation: bugfix infinite 1s;
    margin: 0.5em 1em;
}
@-webkit-keyframes bugfix { from { padding: 0; } to { padding: 0; } }

/*
 * 111 110 101 100 011 010 001 000
 *  0   1   1   0   1   1   1   0
 */

body > input {
    -webkit-appearance: none;
    display: block;
    float: left;
    border-right: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    padding: 0px 3px;
    margin: 0;
    font-family: Consolas, "Courier New", monospace;
    font-size: 7pt;
}
body > input::before {
    content: "0";
}

p {
    font-family: Verdana, sans-serif;
    font-size: 9pt;
    margin-bottom: 0.5em;
}

body > input:nth-of-type(-n+30) { border-top: 1px solid #ddd; }
body > input:nth-of-type(30n+1) { border-left: 1px solid #ddd; clear: left; }

body > input::before { content: "0"; }

body > input:checked::before { content: "1"; }
body > input:checked { background: #afa !important; }


input:not(:checked) +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input::before {
    content: "1";
}
input:not(:checked) +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input {
    background: #fa0;
}


input:checked +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input::before {
    content: "1";
}
input:checked +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input {
    background: #fa0;
}


input:checked +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input::before {
    content: "1";
}
input:checked +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input {
    background: #fa0;
}

input:checked + input:checked + input:checked +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input::before {
    content: "0";
}
input:checked + input:checked + input:checked +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input {
    background: #fff;
}

input:not(:checked) + input:not(:checked) + input:not(:checked) +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input::before {
    content: "0";
}
input:not(:checked) + input:not(:checked) + input:not(:checked) +
        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
        input {
    background: #fff;
}

body > input:nth-child(30n) { display: none !important; }
body > input:nth-child(30n) + label { display: none !important; }
<p><a href="http://en.wikipedia.org/wiki/Rule_110">Rule 110</a> in (webkit) CSS, proving Turing-completeness.</p>

<!-- A total of 900 checkboxes required -->
<input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/><input type="checkbox"/>


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

2
ตัวอย่างนี้ไม่ทำงาน (Firefox 61) ฉันเห็นกล่องกาเครื่องหมายว่างเปล่า - ไม่มีอะไรเกิดขึ้นถ้าคุณทำเครื่องหมาย
OrangeDog

2
@ John "CSS กำลังทำให้สมบูรณ์" ฉันไม่สบายใจ แต่ฉันไม่มีปัญหากับ "CSS นั้นสมบูรณ์เหมือนหินสองก้อนบนชายหาด " คำสั่งหลังจะถูกต้องหรือไม่
Raphael Schmitz

1
@ R.Schmitz no ในกรณีนั้นมนุษย์เลือกที่จะวางหินดังนั้นมันจึงเป็นระบบที่รวมกันของมนุษย์ + หินที่กำลังสมบูรณ์ ในตัวอย่าง CSS ด้านบนปุ่มกด tab + space เป็นกระบวนการทำซ้ำอย่างง่ายคล้ายกับวงจรตอบรับ ดังนั้นหาก C ++ กำลังทำให้สมบูรณ์โดยใช้ฮาร์ดแวร์คอมพิวเตอร์เพื่อดำเนินการตามคำแนะนำดังนั้นจึงไม่แปลกที่จะบอกว่า CSS กำลังทำให้เสร็จสมบูรณ์โดยใช้การกดปุ่มซ้ำเพื่อเรียกใช้คำสั่ง
woojoo666

นี่คือ CodePen of Rule 110 ที่ใช้โซลูชันเดียวกันพร้อมคำอธิบายประกอบและ Sass บางอย่างเพื่อช่วยเหลือ DRY สิ่งที่ออกมา: codepen.io/laras126/pen/OYvGZjฉันเขียนโพสต์บล็อกประกอบอธิบายแนวคิดที่นี่: notlaura.com/is-css -turing-complete
notlaura

89

แง่มุมหนึ่งของทัวริงครบถ้วนเป็นลังเลปัญหา

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

แต่เราสามารถหาอัลกอริธึมเช่นนี้สำหรับ CSS! นี่มันคือ:

  • หากสไตล์ชีทไม่ประกาศภาพเคลื่อนไหวก็จะหยุด

  • หากมีภาพเคลื่อนไหวให้ทำดังนี้:

    • หากanimation-iteration-countมีinfiniteและตัวเลือกที่มีอยู่ถูกจับคู่ใน HTML ก็จะไม่หยุด

    • มิฉะนั้นจะหยุด

แค่นั้นแหละ. เนื่องจากเราเป็นเพียงแค่การแก้ไขลังเลปัญหาสำหรับ CSS มันตามที่CSS จะไม่ทัวริงสมบูรณ์

(คนอื่น ๆ ได้กล่าวถึง IE 6 ซึ่งช่วยให้สามารถฝังการแสดงออก JavaScript โดยพลการใน CSS ซึ่งเห็นได้ชัดว่าจะเพิ่มความสมบูรณ์ทัวริง แต่คุณลักษณะที่ไม่ได้มาตรฐานและไม่มีใครอยู่ในใจของพวกเขาใช้มัน)


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

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

  • @mediaข้อความค้นหาสามารถตรวจสอบคุณสมบัติของเบราว์เซอร์เท่านั้นเช่นขนาดวิวพอร์ตหรือความละเอียดพิกเซล คุณสมบัติเหล่านี้สามารถเปลี่ยนแปลงได้ผ่านการโต้ตอบของผู้ใช้หรือรหัส JavaScript (เช่นการปรับขนาดหน้าต่างเบราว์เซอร์) แต่ไม่สามารถทำได้ผ่าน CSS เพียงอย่างเดียว

  • ::beforeและ::afterองค์ประกอบแบบหลอกไม่ถือเป็นส่วนหนึ่งของ DOMและไม่สามารถจับคู่ด้วยวิธีอื่นใด

  • ตัวเลือก combinatorsสามารถตรวจสอบองค์ประกอบด้านบนและก่อนองค์ประกอบปัจจุบันเท่านั้นดังนั้นจึงไม่สามารถใช้เพื่อสร้างรอบการพึ่งพาได้

  • เป็นไปได้ที่จะเลื่อนองค์ประกอบออกไปเมื่อคุณวางเมาส์เหนือวัตถุ แต่ตำแหน่งจะอัปเดตเมื่อคุณเลื่อนเมาส์เท่านั้น

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

อัลกอริธึมเค้าโครง CSS ที่ทันสมัยมีความซับซ้อนมากพร้อมคุณสมบัติเช่นFlexboxและGrid muddying the water แต่แม้ว่ามันจะเป็นไปได้ที่จะทริกเกอร์วนรอบที่ไม่มีที่สิ้นสุดกับเลย์เอาต์มันก็ยากที่จะใช้ประโยชน์จากสิ่งนี้เพื่อทำการคำนวณที่มีประโยชน์ นั่นเป็นเพราะตัวเลือก CSS ตรวจสอบเฉพาะโครงสร้างภายในของ DOM ไม่ใช่องค์ประกอบที่วางไว้บนหน้าจอ ดังนั้นใด ๆ ครบถ้วนหลักฐานทัวริงใช้ระบบรูปแบบจะต้องขึ้นอยู่กับรูปแบบการอยู่คนเดียว

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


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

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

4
ตรรกะของคุณย้อนหลังที่นี่ ความสมบูรณ์ทัวริงหมายถึงการลังเลไม่ได้หมายความว่าการลังเลไม่ได้หมายความว่าการลังเลใจหมายถึงความสมบูรณ์ทัวริง
ตรวจการ

3
@ แลมบ์ดารีปัญหาการหยุดชะงักของ CSSคืออะไร ฉันไม่เชื่อเรื่องนี้มีอยู่จริง ปัญหาการหยุดชะงักนั้นเกี่ยวข้องกับเครื่องเท่านั้น แบบจำลองการคำนวณที่ทรงพลังที่สุดที่เรามีในวันนี้คือเครื่องทัวริง คอมพิวเตอร์ของคุณทรงพลังเหมือนกับ Turing Machine (ไม่มีหน่วยความจำที่ไม่มีที่สิ้นสุด) ไม่สามารถกำหนด CSS เพียงอย่างเดียวเป็นเครื่อง บางทีคุณสามารถกำหนดเอนจิน CSS ของเบราว์เซอร์เป็นเครื่อง แต่ถึงอย่างนั้นมันก็จะมีประสิทธิภาพเท่ากับ TM คำสั่ง "ปัญหาการหยุดCSS " เพียงแค่ไม่มีเหตุผลใด ๆ ยกเว้นว่า CSS กลายเป็นหุ่นยนต์ตัวใหม่ในลำดับชั้นของ Chomsky
Mike Shi

3
@ แลมบ์ดารี่คุณเข้าใจผิดว่าการพิสูจน์ความไม่สมบูรณ์ของทัวริงนั้นเป็นอย่างไร เรารู้ว่าปัญหาการหยุดชะงักไม่สามารถทราบได้โดย TM หลักฐานดั้งเดิมดูเหมือนว่าจะเรียกร้องเนื่องจาก CSS สามารถแก้ปัญหาการหยุดชะงักไม่สมบูรณ์ ถ้า CSS สามารถแก้ปัญหาการหยุดชะงักได้อย่างแท้จริง CSS นั้นแข็งแกร่งกว่าเครื่องทัวริงเพราะสามารถคำนวณบางสิ่งที่ TM ไม่สามารถทำได้ เรารู้ว่า (โดยวิทยานิพนธ์ของคริสตจักรทัวริง) ว่าไม่สามารถสร้างเครื่องจักรที่แข็งแกร่งกว่า TM / The Lambda แคลคูลัสได้ ดังนั้นนี่คือความขัดแย้งและข้อความต้นฉบับของคุณไม่ถูกต้อง
ไอแซคไดมอนด์

32

ตามบทความนี้ก็ไม่ได้ บทความนี้ยังระบุว่าไม่ใช่ความคิดที่ดีที่จะทำให้เป็นหนึ่ง

อ้างจากหนึ่งในความคิดเห็น:

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


4
CSS ไม่สามารถดำเนินการได้ แต่อย่างใด คนที่เขียนความคิดเห็นที่ยกมานั้นดูเหมือนจะไม่เข้าใจ : - \
Ryan ก่อน

33
CSS คือชุดคำสั่งสำหรับโปรเซสเซอร์ (เอ็นจิ้นเลย์เอาต์) มีอะไร "ปฏิบัติการ" ไม่เกี่ยวกับมัน?
DVK

47
ทัวริงสมบูรณ์ไม่เพียงเกี่ยวกับถ้าคุณสามารถเขียนโปรแกรมในแบบที่คุณต้องการหรือความเชื่อ มันเป็นคุณสมบัติทางคณิตศาสตร์เกี่ยวกับการคำนวณ ดังนั้นคุณไม่สามารถเชื่อหรือไม่ว่า CSS นั้นทัวริงสมบูรณ์คุณต้องมีหลักฐาน ในกรณีนี้เนื่องจากกฎ 110, CSS จึงเสร็จสมบูรณ์ทัวริง
Mikaël Mayer

15
@ MikaëlMayer - ตามที่ระบุไว้ในความคิดเห็นจำนวนมากในคำตอบ "110" ที่ต้องการให้ผู้ใช้ดำเนินการ หากการดำเนินการของผู้ใช้ถูกยืนยันอีกครั้ง CSS ที่ไม่มีผู้ใช้จะไม่สมบูรณ์
DVK

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

6

ทัวริงสมบูรณ์ไม่เพียงเกี่ยวกับ "การกำหนดฟังก์ชั่น" หรือ "มี ifs / ลูป / ฯลฯ " ตัวอย่างเช่น Haskell ไม่มี "loop" lambda-แคลคูลัสไม่มี "ifs" ฯลฯ ...

ตัวอย่างเช่นเว็บไซต์นี้: http://experthuman.com/programming-with-nothing ผู้เขียนใช้ Ruby และสร้างโปรแกรม "FizzBuzz" ที่มีเฉพาะการปิด (ไม่มีสตริงตัวเลขหรืออะไรทำนองนั้น) ...

มีตัวอย่างเมื่อผู้คนคำนวณฟังก์ชั่นเกี่ยวกับคณิตศาสตร์ใน Scala โดยใช้เฉพาะระบบพิมพ์

ดังนั้นใช่แล้วในความคิดของฉัน CSS3 + HTML นั้นสมบูรณ์แบบมาแล้ว


11
Haskell และ lambda-caclculus มีการเรียกซ้ำ CSS หรือเปล่า คุณต้องคลั่งไคล้ในการคำนวณจริง ๆ ใน Malbolge ใน CSS มันไม่สำคัญว่าคุณจะบ้าแค่ไหน: มันใช้งานไม่ได้ CSS ไม่ใช่การทำให้สมบูรณ์แบบและนั่นไม่ใช่เรื่องของความเห็น
JMCF125

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

20
หากไม่มีเจตนาที่จะล่วงละเมิดความสมบูรณ์ทัวริงไม่ตอบสนองต่อความคิดเห็นของใคร
trisweb

5
@ MaurícioSzaboไม่, CSS3 และ HTML รวมถึงมนุษย์ที่ก้าวไปสู่การจำลองอย่างต่อเนื่องคือการทำให้ทัวริงสมบูรณ์
แลมบ์ดาแฟรี่

4
@ แลมบ์ดารี่นั่นก็เป็นความจริงสำหรับเครื่องทัวริงทุกเครื่องด้วยเช่นกัน
Miles Rout

5

ปัญหาพื้นฐานที่นี่คือเครื่องใด ๆ ที่เขียนด้วย HTML + CSS ไม่สามารถประเมินได้หลายขั้นตอน (เช่นไม่มีการเรียกซ้ำ "ของจริง") ยกเว้นว่าโค้ดนั้นมีความยาวไม่สิ้นสุด และคำถามที่ว่าเครื่องนี้จะไปถึงการกำหนดค่าHในnขั้นตอนหรือน้อยกว่านั้นจะตอบได้เสมอถ้าnมี จำกัด


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

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

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

1
@ woojoo666 ไม่การมีความสามารถในการแปลงสถานะตามชุดของกฎนั้นไม่เหมือนกับการทัวริงที่สมบูรณ์ ไม่มีสิ่งใดที่สามารถทำได้ในจำนวน จำกัด ของขั้นตอนเท่านั้นที่สามารถทำให้สมบูรณ์ได้ หากกฎการแปลงชุดสามารถใช้ได้ในจำนวนครั้งที่ จำกัด เท่านั้นคำถาม "ระบบจะเข้าสู่สถานะเคยHหรือไม่" สามารถตัดสินใจได้เสมอและไม่สมบูรณ์ทัวริง การติดตั้งหุ่นยนต์อัตโนมัติที่สามารถทำซ้ำได้จำนวน จำกัด ไม่สามารถทำให้สมบูรณ์ได้
Henrik Sommerland

1
“ และใช่แล้ว CSS นั้นก็สมบูรณ์เช่นกัน” [ต้องการอ้างอิง]
Andrea Lazzarotto

4

นี้คำตอบที่ไม่ถูกต้องเพราะมันผสมรายละเอียดของ UTM และ UTM ตัวเอง (ยูนิเวอร์แซทัวริง Machine)

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


ก่อนอื่นเราสามารถยอมรับว่ามนุษย์สามารถทำงานได้ในฐานะ UTM นี่หมายความว่าถ้าเราทำ

CSS + Human == UTM

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

แทนที่จะเป็น CSS ฉันสามารถใช้ข้อความนี้ ( กฎข้อ 110 ):

000 -> 0
001 -> 1
010 -> 1
011 -> 1
100 -> 0
101 -> 1
110 -> 1
111 -> 0

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


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


กฎ 110 คือ UTM ข้อความของคุณเป็นคำอธิบาย (อาจไม่เพียงพอเล็กน้อย) ของกฎข้อ 110 ดังนั้นใช่ว่าข้อความนั้นเป็น (การเป็นตัวแทนของ) UTM
OrangeDog

"ถ้า CSS สามารถสร้างคลิกได้" ฉันใช้ไมโครคอนโทรลเลอร์ AVR จำนวนมากในโครงการของฉัน คุณสามารถใช้นาฬิกาภายในซึ่ง จำกัด ไว้ที่ 8MHz หรือคุณสามารถเชื่อมต่อคริสตัลภายนอกและไปถึง 20MHz อีกวิธีหนึ่งที่ฉันสามารถจัดหานาฬิกาภายนอกได้อย่างสมบูรณ์ดังนั้นมันจึงไม่ใช่ฮาร์ดแวร์ซีพียูที่ขับคริสตัลจริงๆ หมายความว่าฉันสามารถต่อสายสวิทช์และวงจรเพื่อหักล้างมันและใช้ตัวอักษรนั้นเป็นนาฬิกากับฉันโดยการกดปุ่ม นั่นหมายความว่าจะหยุดการทำให้สมบูรณ์ถ้าฉันทำเช่นนั้น?
Cedric Mamo

1
@CedricMamo แต่การคลิกของคุณเปลี่ยนสถานะและคุณต้องคลิกที่ถูกต้องเท่านั้นสถานที่อื่น ๆ ที่ชาญฉลาดมันจะไม่ทำงาน ดูตรงที่eli.fox-epste.in/rule110-full.htmlฉันสามารถคลิกเซลล์ใดก็ได้หาก CSS ถูกปิดใช้งานฉันยังคงคลิกเซลล์ที่ถูกต้องและมี UTM หากสิ่งที่คุณต้องทำคือคลิกปุ่ม "ถัดไป" แน่นอน CSS จะเป็น UTM แต่มีบางอย่างเช่นที่คุณจะต้องมี JS ที่เรียกใช้ต่อคลิกปุ่มและอย่างที่เรารู้ JS IS UTM สำหรับ CSS คุณต้องมีบางอย่างที่จะตีความผลลัพธ์อย่างถูกต้องและอัพเดทสถานะ
Yankes

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

1
@CedricMamo แต่ Cellular automata มีคำจำกัดความของตัวเองเป็นวงเมื่อการเปลี่ยนสถานะเสร็จสิ้นแล้วจะมีการเรียกใช้อีกครั้งและอีกครั้งเป็นต้นหากเราลบออกและปล่อยให้สถานะการเปลี่ยนสถานะนี้เป็นแบบอัตโนมัติเท่านั้น นี่จะเป็นสถานการณ์เดียวกับ CSS เราสามารถกำหนดสองขั้นตอนใน CA R- read state และW- write state CA ปกติทำลำดับอนันต์RWRWRWRW...ในกรณีของ CSS ที่เรามีเท่านั้นRและเราไม่มีWเพราะมันแก้ไขสิ่งที่ไม่สามารถอ่านได้ถ้าเราเพิ่มB- การกระทำของเบราว์เซอร์แล้วเราอาจมีRBRBRBR...แต่แล้วBBBBBBเป็นของตัวเอง UTM
Yankes

-28

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

CSS เป็นเพียงคำอธิบายสไตล์ มันไม่มีตรรกะใด ๆ และโครงสร้างมันแบน


1
นอกจากนี้ (IIRC) ยังมีความคลุมเครือเกี่ยวกับสไตล์ที่จะมาก่อนเมื่อใช้สไตล์ที่ขัดแย้งกัน (ซ้ำ) หลายแบบ และมีวิธีแตกต่างกันเล็กน้อยที่เบราว์เซอร์ที่แตกต่างกันใช้ / ตีความลักษณะมาร์กอัปที่จะจัดการกับ
David R Tribble

70
"CSS ไม่ใช่ภาษาการเขียนโปรแกรมดังนั้นคำถามของทัวริง - ความสมบูรณ์จึงไม่มีความหมาย" ประโยคที่มีความซ้ำซ้อน
Adam Davis

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