การเขียนโปรแกรมแบบจินตภาพด้วยบล็อกคำสั่ง: จาก MIT Scratch สู่ Google Blockly
เทคโนโลยีซอฟต์แวร์ HTML5/CSS/JavaScript และอื่น ๆ ที่เกี่ยวข้อง ทำให้เกิดรูปแบบการใช้งานซอฟต์แวร์ผ่านเว็บเบราว์เซอร์และอินเทอร์เน็ต อย่างเช่น "Software as a Service" (SaaS), "Coding in the Cloud" เป็นต้น มีการพัฒนาเครื่องมือหรือซอฟต์แวร์ที่ใช้สำหรับเขียนหรือสอนการเขียนโปรแกรมตามมาอีกมากมาย โดยทั่วไป ผู้ใช้ไม่จำเป็นต้องติดตั้งซอฟต์แวร์ในเครื่องคอมพิวเตอร์ของตนเอง
💡 MIT Scratch, Berkeley Snap! และ MIT App Inventor 2 for Android
จากโพสต์คราวที่แล้ว "การเขียนโปรแกรมแบบจินตภาพด้วยบล็อกคำสั่ง: MIT Scratch และ Berkeley Snap! สู่การเชื่อมต่อกับ Arduino" ได้กล่าวถึง MIT Scratch (https://scratch.mit.edu) ซึ่งเป็นซอฟต์แวร์ Open Source มีการใช้งานแบบ Desktop App สามารถนำไปสอนเยาวชนในช่วงอายุ 8 - 16 ปี เรียนรู้ Coding เป็นทักษะพื้นฐาน เน้นการสร้างเรื่องราวแบบปฏิสัมพันธ์ สร้างเกมส์ หรือ ภาพเคลื่อนไหว กราฟิก 2 มิติ
นอกจาก Scratch ก็ได้กล่าวถึง Berkeley BYOB/Snap! (https://snap.berkeley.edu) ซึ่งเป็นอีกหนึ่งตัวเลือก (Open Source) สำหรับฝึกเขียนโปรแกรมแบบกราฟิก ซึ่งอันที่จริงแล้ว ในตอนเริ่มต้น Snap! ก็เกิดจากการดัดแปลงโค้ด Scratch แต่ต่อมาได้พัฒนาใหม่ และใช้ภาษา JavaScript
โลกของเทคโนโลยีเปลี่ยนแปลงพัฒนาไปตลอดเวลา ล่าสุด Scratch เวอร์ชัน 3.0 ก็ใช้งานเป็นแบบ Web App ได้แล้ว โดยใช้ภาษา JavaScript (ใช้ไลบรารี Scratch Blocks) ในการพัฒนา
MIT Scratch และ Berkeley Snap! เป็นสองตัวเลือกที่ได้เลือกมานำเสนอ และใช้สำหรับฝึกเขียนโค้ดได้ด้วยวิธีลากบล็อกมาวาง (Drag & Drop Visual Programming) แต่ไม่ได้ใช้สำหรับเขียนโค้ดภาษาคอมพิวเตอร์โดยตรง (Text-Based Programming) และก็ไม่ได้ใช้สำหรับการสร้างโค้ดแล้วคอมไพล์หรือแปลงให้เป็นแอปพลิเคชันโดยอัตโนมัติ
แต่ถ้าอยากจะสอนเด็ก ๆ ให้ลองสร้าง Android App สำหรับสมาร์ทโฟน หรือแท็บเล็ต ด้วยวิธีการเดียวกับ Scratch และ Snap! และไม่จำเป็นต้องเขียนโค้ด ก็มีตัวเลือกอย่างเช่น MIT App Inventor 2 for Android (http://appinventor.mit.edu/explore/) โครงการนี้ เริ่มราวปีค.ศ. 2010 โดย Google และพัฒนาต่อโดยทีมงานจาก MIT ในปีค.ศ. 2012 และเผยแพร่เวอร์ชัน "App Inventor 2" ในเดือนธันวาคม ค.ศ. 2013 ... ปัจจุบัน สามารถเข้าใช้งานแบบออนไลน์ได้ที่ http://ai2.appinventor.mit.edu/ ถ้าลองสืบค้นในอินเทอร์เน็ต จะเห็นมีตัวอย่างในหลายเว็บที่สร้าง Android App โดยใช้ MIT App Inventor 2 เพื่อเชื่อมต่อกับบอร์ด Arduino ผ่าน Bluetooth เช่น รับค่าจากเซ็นเซอร์ที่ต่อกับบอร์ด Arduino มาแสดงผลใน App หรือควบคุมหุ่นยนต์ หรือส่งข้อมูลต่อไปยัง Google Firebase เป็นต้น
💡 เมื่อ Scratch ต้องเปลี่ยนมาใช้ Google Blockly
Scratch 3.0 เปลี่ยนมาใช้ JavaScript (แทน ActionScript และ Adobe Flash Player) และได้ใช้ไลบรารีที่ชื่อว่า Scratch Blocks (https://github.com/LLK/scratch-blocks) ซึ่งมาจากโปรเจกต์ Blockly (https://developers.google.com/blockly/) พัฒนาโดย Google เริ่มต้นในเดือนมิถุนายน ค.ศ. 2012 และเป็น Open Source (Apache License 2.0)
Blockly เป็นไลบรารี หรือ API ที่ใช้ JavaScript / HTML5 / CSS สำหรับนำไปใช้พัฒนา Web App สำหรับผู้ที่ต้องการสร้างโปรแกรมด้วยการต่อบล็อก (Scratch-like, Visual Block Programming) และแตกต่างจาก Scratch ซึ่งเป็นแอปพลิเคชัน (Web App)
ถ้าอยากทราบว่า จะใช้ Blockly สร้าง Web App อย่างไรได้บ้าง ลองดูตัวอย่าง ให้ดูเว็บ "Blockly Games" (https://blockly-games.appspot.com/) ที่มีตัวอย่างเกมส์ ผู้ใช้หรือผู้เล่นต้องนำบล็อกที่มีให้เลือก มาวางต่อกันเพื่อแก้ปัญหา
Blockly สามารถแปลงโปรแกรมที่ได้จากการต่อบล็อกต่าง ๆ ให้กลายเป็นโค้ดในภาษาคอมพิวเตอร์ ซึ่งมีหลายภาษาให้เลือกเป็นเอาต์พุต เช่น JavaScript, Python เป็นต้น ดังนั้น ผู้เรียนสามารถเปรียบเทียบและเชื่อมโยงระหว่างโปรแกรมที่เกิดจากการต่อบล็อก และโค้ดที่ได้จากโปรแกรมในภาษาคอมพิวเตอร์ตามที่เลือกให้เป็นเอาต์พุต (ตรงนี้ก็ถือว่า สำคัญในการเรียนรู้ Coding)
💡 BBC Micro:bit, Microsoft MakeCode
โครงการ BBC Micro:bit (https://microbit.org/) จากประเทศอังกฤษ ได้พัฒนาบอร์ดไมโครคอนโทรลเลอร์ Micro:bit เพื่อส่งเสริมการเรียนรู้ด้านคอมพิวเตอร์ให้แก่เยาวชน ผู้เรียนสามารถใช้เขียนโค้ดโดยการนำบล็อกมาต่อกัน ใช้งานผ่านเว็บเบราว์เซอร์ โดยเข้าไปที่เว็บ Micro:bit's Code Kingdoms (https://www.microbit.co.uk/app/) หรือ Microsoft MakeCode for Micro:bit (https://makecode.microbit.org/)
MakeCode ของ Microsoft ก็ใช้ Google Blockly เป็นพื้นฐาน (a fork of Blockly) ในการสร้าง Web-based Block editor และใช้วิธีแปลงบล็อกเหล่านั้น ให้เป็นโค้ดในภาษา "Static TypeScript (STS) / TypeScript" จากนั้นจึงแปลงให้เป็นไฟล์โปรแกรม (.hex) ที่นำไปใช้ได้กับบอร์ด Micro:bit
ผู้ที่อยากจะใช้ Scratch ร่วมกับบอร์ด Micro:bit ก็มีตัวเลือกอย่างเช่น "Scratch 3.0 micro:bit experimental extension" ซึ่งสามารถเชื่อมต่อโปรแกรม Scratch ผ่าน Bluetooth ไปยังบอร์ด Micro:bit ได้ โดยต้องโปรแกรมไฟล์ scratch-firmware-combined.hex ลงในบอร์ดก่อน
💡 Arduino กับการเขียนโค้ดเชิงกราฟิกแบบออนไลน์ในสไตล์ Blockly
ลองมาดูว่า มีตัวอย่างเว็บที่ใช้ Blockly มาสร้าง Web App สำหรับสร้างโปรแกรมเพื่อนำไปใช้กับบอร์ดไมโครคอนโทรลเลอร์ อย่างเช่น Arduino อะไรบ้าง
◻️ BlocklyDuino (https://github.com/gasolin/BlocklyDuino)
- เป็น Web-based visual programming editor for Arduino
- ได้แรงบันดาลใจมาจาก ( inspired by) "ArduBlock" ซึ่งเป็น Arduino Plug-in สำหรับเขียนโค้ดด้วยบล็อก
- พัฒนาโดย Fred Lin ตั้งแต่ปีค.ศ. 2012
- เป็น Open Source (Apache License 2.0)
- ใช้ Google Blockly สำหรับพัฒนาในส่วนที่เป็น Web App
- สามารถรันเป็น Web server (เขียนด้วย Python) ในเครื่องของผู้ใช้ได้ และเข้าใช้งานผ่านหน้าเว็บได้ แต่จะต้องติดตั้งซอฟต์แวร์ Arduino IDE & tools ในเครื่องของผู้ใช้ เพื่อใช้ในการคอมไพล์โค้ดและอัปโหลดไปยังบอร์ด Arduino
- ใช้สำหรับบอร์ด Arduino Uno, Mega, Nano เป็นต้น
- มีการเพิ่มบล็อกให้เลือกใช้สำหรับฮาร์ดแวร์ของ Groove เช่น RC Servo, Motor, Relay, Button, Tilt Switch เป็นต้น และสามารถใช้งานออนไลน์ได้ที่ BlocklyDuino "Grove Edition" https://bit.ly/2mPqDwq
◻️ BlocklyProp (http://blockly.parallax.com/blockly/)
- เผยแพร่ครั้งแรกในเดือนกันยายน ค.ศ. 2016
- พัฒนาโดยบริษัท Parallax Inc. (USA)
- เป็น Open source (Apache License 2.0)
- ได้แรงบันดาลใจมาจาก (inspired by) BlocklyDuino
- ใช้ Google Blockly สำหรับพัฒนาในส่วนที่เป็น Web App
- สามารถรันเป็น Web server (เขียนด้วย Java) ในเครื่องของผู้ใช้ได้ และเข้าใช้งานผ่านหน้าเว็บได้
- ใช้ได้เฉพาะบอร์ด Parallax เท่านั้น เช่น บอร์ด Propeller Multicore(http://www.parallax.com/microcontrollers/propeller)
- เข้าใช้งานแบบออนไลน์ผ่านเว็บได้ที่ http://blockly.parallax.com/blockly/ และผู้ใช้ต้องติดตั้งซอฟต์แวร์ชื่อ "BlocklyProp Client" เพื่อใช้ในการเชื่อมต่อบอร์ดผ่านทาง USB สำหรับการอัปโหลดโปรแกรม
◻️ ArduBlockly (https://ardublockly.embeddedlog.com/)
- ได้แรงบันดาลใจมาจาก ( inspired by) และพัฒนาต่อยอดจาก BlocklyDuino
- ใช้ Google Blockly สำหรับพัฒนาในส่วนที่เป็น Web App
- เป็น Open source (Apache License 2.0)
◻️ Blockly@rduino (http://www.techmania.fr/BlocklyDuino/)
- พัฒนาต่อยอดจาก BlocklyDuino เริ่มต้นราวปีค.ศ. 2016
- เป็น Open Source (Apache License 2.0)
- ใช้ Google Blockly สำหรับพัฒนาในส่วนที่เป็น Web App
- ใช้สำหรับบอร์ด Arduino Uno, Mega, Nano เป็นต้น
◻️ Webduino Blockly (https://blockly.webduino.io/)
- ใช้สำหรับบอร์ด BPI:bit (ESP32-based) จากบริษัทในประเทศจีน
- เป็น Open Source
🤔 เพิ่มเติม:
- การสร้างระบบซอฟต์แวร์ในทางวิศวกรรมแบบใช้บล็อก ก็มีให้เห็น อย่างเช่น MATLAB / Simulink และ LabView เป็นต้น สามารถจำลองการทำงาน แล้วแปลงเป็นโค้ดคอมไพล์ไปใช้งานสำหรับบอร์ดไมโครคอนโทรลเลอร์ได้ แต่ก็เป็นซอฟต์แวร์ที่ต้องเสียค่าลิขสิทธิ์ ไม่ฟรี และไม่ใช่ Open Source
- การเขียนโปรแกรมโดยใช้บล็อกสำหรับไมโครคอนโทรลเลอร์ เช่น Arduino ความสะดวกอยู่ที่การเลือกใช้บล็อกที่มีการเตรียมไว้แล้ว ก็เหมือนกับการสร้างไลบรารีสำหรับ Arduino ไว้ให้เรียกใช้งาน คนอื่นทำไว้ให้ เราก็แค่นำมาใช้งานให้เป็น
- ถ้าชุดของบล็อกเหล่านั้น (หรือเรียกว่า Block Set) มีอย่างจำกัด ก็จะจำกัดความยืดหยุ่นหรือความสามารถในการสร้างโปรแกรมของเราได้ แต่ถ้าบล็อกเซตมีจำนวนมาก เช่น มีจำนวนของบล็อกหลักร้อยหรือหลักพัน ก็ต้องใช้เวลาเรียนรู้ว่า แต่ละบล็อกใช้งานอย่างไร
- บางกรณีมีการสร้าง Custom Block (Blockly-based) ให้ผู้ใช้ เขียนโค้ดเองลงในบล็อกนั้นก็ได้ หรือถ้าสามารถสร้างบล็อกเพิ่มเติมไว้ใช้งานได้เอง ก็น่าสนใจ
- การสร้างบล็อกสำหรับใช้งานกับอุปกรณ์ฮาร์ดแวร์ แม้ว่าจะเป็นอุปกรณ์ประเภทเดียวกัน ก็มีความแตกต่างกันได้ เหมือนในกรณีของไลบรารีสำหรับ Arduino จากผู้พัฒนาหลายแหล่งและมีชื่อฟังก์ชันหรือคำสั่งซึ่งแตกต่างกัน
🤔 ข้อคิดเห็น:
- ตัวเลือกซึ่งเป็นซอฟต์แวร์สำหรับการเรียนรู้ ที่ได้นำเสนอมานั้น เป็นแค่บางส่วน (Open Source ทั้งหมด) ยังมีตัวเลือกอื่น ๆ อีกสำหรับการเรียนรู้
- ควรส่งเสริมความหลากหลาย เพื่อให้เกิดการเปรียบเทียบ พิจารณาความเหมือนความต่าง และความเชื่อมโยง
- มีตัวเลือกให้มากมายและใช้ได้ฟรี แต่ถ้าไม่เริ่มและลงมือจริงจัง ก็ไม่ก่อให้เกิดประโยชน์
References / Credit
- MIT Scratch
🔗 https://scratch.mit.edu
- Berkeley Snap!
🔗 https://snap.berkeley.edu
- MIT App Inventor 2 for Android
🔗 http://appinventor.mit.edu/explore/
- MIT App Inventor 2 online editor
🔗 http://ai2.appinventor.mit.edu/
- Google Blockly
🔗 https://developers.google.com/blockly/
- Google Blockly: Sourcecode
🔗 https://github.com/google/blockly
- Scratch Blocks: Sourcecode
🔗 https://github.com/LLK/scratch-blocks
- BBC Micro:bit
🔗 https://microbit.org/
- Micro:bit's Code Kingdoms
🔗 https://www.microbit.co.uk/app/
- MakeCode: Microsoft's JavaScript Blocks editor for Micro:bit
🔗 https://makecode.microbit.org/
- Scratch 3.0 micro:bit experimental extension
🔗 https://llk.github.io/microbit-extension/iste18/
- ArduBlock: Sourcecode
🔗 https://github.com/taweili/ardublock
- BlocklyDuino: Sourcecode
🔗 https://github.com/gasolin/BlocklyDuino
- BlocklyProp
🔗 http://blockly.parallax.com/blockly/
- BlocklyProp Starter Kit, Parallax Inc.
🔗 https://www.parallax.com/educ…/teach-blocklyprop-starter-kit
- BlocklyProp: Sourcecode
🔗 https://github.com/parallaxinc/BlocklyProp
- ArduBlockly
🔗 https://ardublockly.embeddedlog.com/
- ArduBlockly: Sourcecode
🔗 https://github.com/carlosperate/ardublockly/
- BlocklyDuino "Grove Edition"
🔗 https://blocklyduino.github.io/Blockly…/…/apps/blocklyduino/
- Blockly@rduino
🔗 http://www.techmania.fr/BlocklyDuino/
- Blockly@rduino: Sourcecode
🔗 https://github.com/technologiescollege/Blockly-at-rduino
- Webduino: Sourcecode
🔗 https://github.com/webduinoio
#IoT #STEM #VisualProgramming #KruBright
同時也有1部Youtube影片,追蹤數超過15萬的網紅DrTech,也在其Youtube影片中提到,======DRTECH====== □Subacribe Our Channel ■https://www.youtube.com/c/SyedHassanRazaShahs ○HYPER ROM V10 download here? ●http://shrinkearn.com/Zc9Tx...
「android button text」的推薦目錄:
- 關於android button text 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於android button text 在 DrTech Youtube 的最讚貼文
- 關於android button text 在 Android widget: How to change the text of a button - Stack ... 的評價
- 關於android button text 在 [MaterialButton] Long button text gets cut off when using ... 的評價
- 關於android button text 在 Login Button - Facebook Login - Documentation - Facebook ... 的評價
- 關於android button text 在 Should text field and button have same size? - UX Stack ... 的評價
android button text 在 DrTech Youtube 的最讚貼文
======DRTECH======
□Subacribe Our Channel
■https://www.youtube.com/c/SyedHassanRazaShahs
○HYPER ROM V10 download here?
●http://shrinkearn.com/Zc9Tx
After flashing the rom do this....!
1. To fix settings force close when use "Tab view"
- Go to General options in hyper-tools and select "Old Style" option
- Open Settings and select List View
- Now uncheck the "Old Style" from hyper-tools
2. To set up a nougat like locksreen with hide clock in statusbar
- Enable AM-PM from hyper-tools & settings
- Enable "Lock Widgets" from hyper-tools
- Add "Hyper Clock Widget" in locksreen as widget also make sure to leave it in default view
3. Fix camera failed to open
Note: This should happen from an old 4.3 based stock
- Just flash this fix by JustArchi
- http://www.mediafire.com/file/40datd...Camera+Fix.zip
4. Best way to flash the rom
- Go to CWM based recovery (Latest Recovery is recommended https://dl.twrp.me/i9300/) by holding HOME - POWER - and VOL UP BUTTON
- FULL WIPE is highly recommended!
- Mount everything (System, Data, Cache..)
- Choose "Install ZIP from sdcard"
- Choose ROM zip file
- Go through AROMA (Choose only what you want to install)
- Wait for finishing flashing
- Reboot and enjoy
5. What to do after first boot?!
- Do a systemui restart in hyper-tools from General options
- Enable Dynamic statusbar in settings from Advanced features
- Enable Long press home key in hyper-tools/ Buttons, Actions... / Physical Function Keys/ here
- Also in hyper-tools from Recent Apps select a style for recent apps
Changelogs:
V10
#1 SystemUi
- Removed edit button
- Moved pull down button under brightness like nougatux
- Redesigned all toggles like nougatux
- Smaller date & clock
- Uppercase AM-PM
- Redesigned auto brightness panel
- Redesigned volume panel
- Smaller toggles icons
- Added no recent apps image like nougat
- Some toggles name fixed
- Updated & fixed some stuff here and there
- Full space for notification cards
- Etc
#2 Frameworks
- Redesigned power off menu icons
- New text color on lists
- New animations
- Nougat tab text style
- New list separator text style
- Redesigned volume panel
- New text size
- Some nougat style buttons
- New back button
- Etc
#3 Hyper-Tools
- New text style actionbar
- Added option for SF & QQ text size
- Added option for settings & audio icons color in volume panel
- Added blue icons for settings
- Added blur effect for recent apps
- Added Hyper locksreen effects
- Edited the transparent background options for notification panel
- Changed some names for some better feel
- Changed the default list icons
- Added a way to fix fc on tab view for settings
- Etc
#4 Dialer & Contacts
- Better design in dialer pad like nougat
- Redesigned camera, dial, remove icons
- Some nougat icons and colors
- New default contact preview
- Fixed some dividers
- Etc
#5 Keyguard (Locksreen)
- Added "Hyper Clock Widget" that you should add as a widget
- Removed clock in statusbar like nougat
(Note: This will work only when use hyper clock)
- Smaller camera icon
#6 Settings
Note: Dont use "Tab View". It will give force close
- New text style actionbar
- Reworked on all categories
- Redesigned all icons on HD in all theme modes
- Added blue icons for the new option
#7 Music
- Removed back button
- Removed white mode and replaced with Blue mode
- Smaller text in full player
- New text style actionbar
- Etc
*Blue
- New background
- Blue text color in tabs
- Transparent mini player background
#8 Gallery
- White actionbar in full view
- Redesigned some icons like nougat
- New actionbar text style
- Some redesigned stuff
- Etc
#9 InCallUi
- New background
- Redesigned endcall button
- Redesigned incoming call buttons
- Redesigned endcall buttons like nougat
- Fixed some layouts
- Etc
#10 Messages
- Nougat style for new message button
- Some new text color
- New default contact preview
#11 Camera
- New shutter buttons
- Redesigned some stuff
#12 Others
- Fixed freezing and soft reboot after turning on the phone sometimes
- Better performance
- Ram management should be better
- Added back Boeffla kernel unofficial
- Some libs fixed
- Removed some useless samsung stuff
- Added some system tweaks
- Removed old kernel + config app
- Added latest boeffla config app
- Removed launcher option in aroma
- Added Fan Art Boot Animation in aroma
- Fixed SNote
□Subscribe Our Channel
■https://www.youtube.com/c/SyedHassanRazaShahs
-LONG LIVE PAKISTAN-
android button text 在 [MaterialButton] Long button text gets cut off when using ... 的推薦與評價
Add material lib and set material theme. Use the following activity layout: <androidx.constraintlayout.widget.ConstraintLayout xmlns:android=" ... ... <看更多>
android button text 在 Login Button - Facebook Login - Documentation - Facebook ... 的推薦與評價
The Continue as {Name} button has the text "Continue as {persons' name}" and optionally includes the person's Facebook profile picture if they're logged in ... ... <看更多>
android button text 在 Android widget: How to change the text of a button - Stack ... 的推薦與評價
... <看更多>
相關內容