New status by veer66

Error handling ของ Common Lisp (CL) มันต่างออกไปจากค่ายอื่น ๆ

ผมเดาว่า CL ออกแบบมาให้ใช้กับ Interactive และ REPL แต่แรก เวลามี condition (คล้าย ๆ exception) ตอนรัน CL จะถามว่าให้ทำอะไรต่อไป เช่น ทำซ้ำ (retry), เลิกไปเลย (abort), ให้ส่งค่าอื่นเข้าไปแทน (use-value); พวก retry, abort, use-value นี่ล่ะเรียกว่า restart

ภาษาอื่นถ้า exception แต่ไม่ได้ handle มันมักจะ abort เลือกไม่ได้

อีกส่วนคือ handler เป็น code ที่เขียนว่าถ้าเจอ condition ให้ทำอะไรเช่น เรียก invoke-restart อีกที

By

from ดิจิทัลวี 🇹🇭🖥☕️ http://ift.tt/2EMm51F
via IFTTT

Advertisements

New status by veer66

โปรแกรมของทาง web app ที่ทรงอาจจะต้องจอง array ใหญ่ เช่น nginx, Apache Httpd, PostgreSQL, MySQL, MongoDB นี้เขียนด้วย C/C++ ทั้งหมด

โปรแกรมที่ชาวบ้านใช้ ๆ กันยกเว้นอยู่ตัวเดียวคือ ElasticSearch (+ Apache Lucene) ที่เอา Java เขียนเกือบทั้งหมด

ถ้า GC ของ JVM จะมีปัญหาอะไรก็คงจะมีกับ ElasticSearch นี่ล่ะมั้ง

By

from ดิจิทัลวี 🇹🇭🖥☕️ http://ift.tt/2FcTnoj
via IFTTT

New status by veer66

JVM ที่ผมใช้เวลา -version มันเขียนว่างี้ครับ "OpenJDK 64-Bit Server VM" ซึ่งอาจชี้ว่าไม่ได้ให้เอาไปรัน REPL หรือ IDE บน Desktop นะ

บน server คงไม่ค่อยมีใครรัน ๆ ไปก็เปิด word processor มาแก้เอกสาร เปิด web browser มาอ่านคู่มือ; มันรันโปรแกรมเดิม ๆ ค้างไว้แบบนั้นล่ะ ดังนั้นการกั๊ก memory ไปใช้เลย โดยไม่ต้องจอง ๆ คืน ๆ กับ OS มันพอจะดูสมเหตุสมผลอยู่

By

from ดิจิทัลวี 🇹🇭🖥☕️ http://ift.tt/2GquCEw
via IFTTT

New status by veer66

ตอนนี้จอง array ของ string 10000000 เส้น ไว้ 3 ชุด แล้วสั่ง GC พอเห็นความหน่วงอึ้งว่าเราทนใช้ของอืด ๆ ขนาดนี้ได้ไงขนาดว่าใช้ Core i5 7200U

สมแล้วที่เขาไม่เรียก GC กันบ่อย ๆ

อย่างก็ตามโปรแกรมเมอร์ที่เขียน web app หรือ mobile app ไม่รู้ว่าเคยจอง array เกิน 1000 ช่องหรือเปล่า 😅

By

from ดิจิทัลวี 🇹🇭🖥☕️ http://ift.tt/2FensUx
via IFTTT

New status by veer66

Ruby 1.6.8 ไม่มีจองกั๊กแบบ JVM ไม่ได้จัดการเรื่อง page อะไรเลยด้วยซ้ำ

คือไปเรียก malloc free เอาธรรมดา ๆ

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

ในขณะที่ปี 2002-2003 นั้น Java ที่ใช้ ๆ กันยังเป็น proprietary software อยู่เลย

* github.com/ruby/ruby/blob/ruby
* github.com/ruby/ruby/blob/ruby

By

from ดิจิทัลวี 🇹🇭🖥☕️ http://ift.tt/2ogTwPD
via IFTTT

New status by veer66

ใน Java bytecode ของ CIL .Net มันมี instruction แบบ newobj newarr เลย โปรแกรมไม่ต้องมาจัดการ memory เอง

ผิดกับ Web Assembly ที่ไม่มีกระทั่ง malloc คำสั่งที่มีใช้คือ grow_memory ที่ว่ากันว่า low level พอ ๆ กับ sbrk ที่ malloc มาเรียกใช้อีกที

ดังนั้นถ้าจะใช้ garbage collection ก็ต้องยัด code garbage collection เข้าไปด้วย 😅

ทำให้ผมคิดว่าการแปลงโปรแกรมเป็น JS ก็ยังดูเข้าท่ากว่าแปลงเป็น WASM ในหลาย ๆ กรณี อย่างน้อย ๆ ก็ไม่ต้องยัด GC และ malloc เข้าไปด้วย

By

from ดิจิทัลวี 🇹🇭🖥☕️ http://ift.tt/2HpBu6e
via IFTTT