ถ้าใครคิดว่าโปรแกรมเมอร์ทุกคน
จะเขียนโปรแกรมได้ครอบจักรวาลทุกหมวดหมู่
ท่านคิดผิดถนัด
เพราะพวกเขาจะถนัดและชำนาญแตกต่างกันออกไป
.
ถ้าจะเปรียบเปรยคงไม่ต่างกับสายอาชีพแพทย์
ที่แยกย่อยออกเป็นเฉพาะทาง
เช่น อายุรแพทย์, สูตินรีแพทย์, ศัลยแพทย์, จักษุแพทย์, จิตแพทย์, รังสีแพทย์, และกุมารแพทย์ เป็นต้น
.
ดังนั้นงานของโปรแกรมเมอร์
ก็สามารถซอยแยกย่อยออกมาเป็นถนนหนทางได้หลายสาย
พร้อมทั้งภาษาเขียนโปรแกรมก็นิยมต่างกันด้วย
โดยในมุมของผู้เขียนขอแบ่งสายงานประมาณนี้
(อาจตกหล่นไปบ้าง หรือผิดพลาดไปก็ขออภัย)
.
1. เดสก์ท็อปแอปพลิเคชัน (Desktop Application)
โปรแกรมเมอร์สายนี้ พวกเขาจะพัฒนาซอฟต์แวร์ที่ทำงานอยู่บนคอมพิวเตอร์แบบตั้งโต๊ะ หรือไม่ก็โน้ตบุ๊กเป็นหลัก ซึ่งเป็นสายงานยุคดั้งเดิมตั้งแต่โลกนี้เริ่มมีคอมพิวเตอร์เกิดขึ้นมา
.
▶ ภาษาที่นิยมเช่น: C++, Java, Python, VB.NET, C#
.
2. โมบายล์แอปพลิเคชัน (Mobile Application)
เรียกว่าเป็นสายเกิดใหม่ เพราะตั้งแต่อุปกรณ์ เช่น สมาร์ตโฟน แท็บเล็ต ไอแพด และอื่นๆ บูมขึ้นมา มันเหมือนมีตลาดเกิดใหม่ จึงต้องการโปรแกรมเมอร์ที่จะมาพัฒนาซอฟต์แวร์บนอุปกรณ์พวกนี้
.
▶ ภาษาที่นิยม Java, Kotlin, Objective-C, Swift
.
3. เว็บแอปพลิเคชัน (Web Application)
โปรแกรมเมอร์สายนี้จะพัฒนาเว็บไซต์ และเป็นสายที่ยังคงความนิยมไม่เสื่อมคลาย โดยข้อดีของเว็บไซต์ก็คือ ไม่ต้องลงโปรแกรมอะไรทั้งสิ้น ขอให้มีอินเทอร์เน็ตเข้าถึง ก็ใช้งานเว็บได้แล้ว
.
ซึ่งงานพัฒนาเว็บไซต์ในองค์กรที่มีความซับซ้อนทางธุรกรรมเป็นอย่างสูง (Enterprise System) มักแบ่งงานออกเป็นสองส่วน ได้แก่
.
3.1) Front-end มักเรียกกันสั้นๆ ว่า หน้าบ้าน เป็นส่วนติดต่อผู้ใช้ (User interface) ไม่ว่าจะเป็น หน้าเว็บเพจ เนื้อหาต่างๆ รูปภาพ ลิงก์ เป็นต้น จะเป็นส่วนที่ผู้ใช้มองเห็นและใช้งานเว็บไซต์
▶ ภาษาที่นิยม HTML, CSS, JavaScript
.
3.2) Back-end มักเรียกกันสั้นๆ ว่า หลังบ้าน เป็นระบบจัดการเว็บไซต์เบื้องหลัง เช่น จัดการฐานข้อมูล เป็นต้น
▶ ภาษาที่นิยมเช่น PHP, ASP.NET, J2EE, Node.js, Rails
.
4. ซอฟต์แวร์สมองกลฝังตัว (Embedded System Software)
งานสายนี้เป็นการเขียนโปรแกรมบนอุปกรณ์อิเล็กทรอนิกส์ เช่น หุ่นยนต์ ระบบตู้เย็นอัจฉริยะ ระบบรถยนต์อัจฉริยะ เป็นต้น
.
▶ ภาษาที่นิยมเช่น C, C++, Python
.
5. พัฒนาเกม (Game Development)
โปรแกรมเมอร์จะมีหน้าที่สร้างเกม ซึ่งงานสายนี้ไม่ได้มีแค่การเขียนโปรแกรมอย่างเดียว เพราะการพัฒนาเกมจะมีงานส่วนอื่นอีก เช่น การวางพล็อตเรื่อง ดนตรี และการออกแบบตัวละครในเกม เป็นต้น
.
▶ ภาษาที่นิยมเช่น C++, C#, Java, HTML/CSS,/JavaScript
.
6. ใช้ความรู้วิทยาศาสตร์คอมพิวเตอร์ขั้นสูง
โปรแกรมเมอร์สายนี้จะพัฒนาซอฟต์แวร์ขั้นสูง เช่น ซอฟต์แวร์ระบบ และเครื่องมือสำหรับเขียนโปรแกรมทางคอมพิวเตอร์ หรืองานที่นิยมอย่างมากในยุคนี้ได้แก่ Data science (วิทยาการข้อมูล), Machine learning (การเรียนรู้เชิงลึก), AI (ปัญญาประดิษฐ์) ก็จัดอยู่ในสายนี้ด้วย
.
▶ ภาษาที่นิยมเช่น Python, R, Matlab
.
นอกจากนี้ก็ยังมีสายยิบย่อย เช่น
- Hybrid Application
▶ ภาษาที่นิยมเช่น HTML/CSS/JavaScript, C#, Lua, Dart
- สายงานอุตสาหกรรม งานพวก Measurement and Control Systems
▶ ภาษาที่นิยมเช่น LabVIEW
- ถ้าใช้งาน Database
▶ ภาษาที่นิยม SQL และตอนนี้ก็มีเทคโนโลยี NoSQL กำลังเป็นที่นิยม
.
.
ดังนั้นเราต้องรู้ว่าอยากไปทำงานสายใด
แล้วเลือกภาษาที่จะใช้เขียนให้ถูกต้อง
.
แต่กระนั้นก็ไม่เพียงพอ
การทำงานเป็นโปรแกรมเมอร์
ไม่ได้มีแค่เขียนโปรแกรม
.
📗 ที่มา https://www.mebmarket.com/web/index.php?action=BookDetails&data=YToyOntzOjc6InVzZXJfaWQiO3M6NzoiMTcyNTQ4MyI7czo3OiJib29rX2lkIjtzOjY6IjEzMTQxMiI7fQ
.
.
.
.
.
.
ก่อนจากกันไปอยากจะแนะนำ
หนังสือ “โปรแกรมเมอร์ก็รวยได้ ด้วยเส้นทางเอาท์ซอร์สสายดำ”
เล่มนี้จะเล่าเรื่องราวของเอาท์ซอร์ส (Outsource) 🔥
ในสายงานซอฟต์แวร์เป็นหลัก
หนึ่งในเส้นทางโปรแกรมเมอร์จะสามารถอัพเดตเงินเดือน
ให้เกินครึ่งแสนในระยะเวลาอันสั้น
.
โดยจำหน่ายเป็นเล่มกระดาษจริง และอีบุ๊กส์
สำหรับตัวอย่างหนังสือ 👇
PDF: https://drive.google.com/file/d/1tAnMozeYd63dcbBGTQmT_ZrpSaamZS3e/edit
หรือดูจาก youtube: https://youtu.be/Ljf9iJhLcIs
.
รายละเอียดอ่านเพิ่มเติมได้ที่่ 👇
https://www.patanasongsivilai.com/blog/sale_book_rich_with_outsource/
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
เราจะผ่านโควิด-19 ไปกันนะทุกคคนนน
kotlin pdf 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 八卦
System.out.println() ในภาษา Java ถือว่าออกแบบผิดหลักการข้อใด?
.
อันนี้อ้างอิงตามตำรา
Head First Design Patterns (2008) หน้า 268 📗 📗
(ใครมีตำราก็ไปกางเปิดดูได้)
.
👧 คำตอบ การออกแบบคำสั่งชุดนี้ในภาษา Java
จะถือว่าผิดหลักการออกแบบโปรแกรมเรื่อง
"Principle of Least Knowledge"
แปลเป็นไทย "หลักการของความรู้น้อยที่สุด"
.
Principle of Least Knowledge
เป็นหลักการออกแบบ Object ให้รู้จักเพื่อนๆ ที่ใกล้ชิดไม่กี่คน 👩❤️💋👨
.
.
จากประโยคคำสั่ง System.out.println()
System กว่าจะรู้จัก println() ก็ต้องผ่าน out มันไกลเกินไปลูกพี่
ซึ่งข้อเสียมันทำให้โค้ดมีลักษณะยึดติดกันเกินไป
.
ศัพท์ทาง Object Oriented Programming โค้ดจะมีอาการเรียกว่า "coupling" โค้ดเป็นคู่สามีภรรยา เกี่ยวดองกันแนบแน่น
เช่น ถ้าเกิด out มีการแก้ไขก็จะกระเทือนต่อ println() และ System ไปด้วย (อันนี้แค่ยกตัวอย่างนะ ของจริงอาจไม่กระทบเลยก็ได้)
.
ในขณะที่ภาษาสมัยใหม่พวก Swift, Kotlin
จะเขียนสั้นๆ print(), println() ตามลำดับ
ไม่ต้องมาทำพิธีกรรมเรียกหลายชั้น หลายซ้อนแบบนี้
ก็เราแค่แสดงผลออกทางหน้าคอนโซลนี้น่า
มันจะทำอะไรให้มันวุ่นวายไปใย
.
จะขอยกตัวอย่างโค้ดในหนังสือเช่น
station.getThermometer().getTemperature();
เขียนแบบนี้ จะเห็นว่ามันยาวเหยียด
ถ้าเขียนครั้งเดียวพอทนได้
แต่ถ้าให้เขียนซ้ำๆ มันขี้เกียจเหมือนกันเนอะ
.
สำหรับวิธีแก้ไขปัญหาโค้ดที่ละเมิดหลัก
"Principle of Least Knowledge"
ไม่ยากเลย เราสามารถใช้หลักของดีไซน์แพทเทิร์นตัวหนึ่ง
นั้นก็คือ "เดอะเฟสไทยแลนด์"
...เฮยไม่ใช่แหละ 😜 😜
.
ใช้แพทเทิร์นที่เรียกว่า "The Facade"
เพื่อแก้ไขโค้ดลักษณะนี้
สนใจก็อย่าลืมไปทบทวน
ดีไซน์แพทร์นของ GOF นะ (ขอไม่ลงรายละเอียด)
.
แต่จะว่าไปมันก็เป็นแค่แนวคิดและหลักการเฉยๆ
แล้วแต่เราแหละ เขียนผิดหลักการยังไง
โค้ดก็รันได้ ปกติอยู่แล้ว
มันเป็นแนวคิด ไม่ใช้กฏหมายบังคับซะเมื่อไร
.
เพราะถ้าคนออกแบบเขาจะเอาแบบนี้
ชอบแบบนี้ ชอบที่เป็นแบบนี้ ชอบแววตาแบบนี้
ชอบรอยยิ้มแบบนี้ ก็ชอบคนนี้ ...โฮ้ว~~~
.
ถ้าทำแล้วโค้ดไร้บั๊ก ลูกค้าแฮปปี้พอใจ จ่ายเงินให้เรา ก็คือโอเคสองฝ่าย
ส่วนโปรแกรมเมอร์ที่มารับไม้ต่อ ไม่ชอบดีไซน์โค้ดแบบนี้
ก็จับ refactoring เอาเองแล้วกันเด้อ
.
อีกอย่างที่ยกตัวอย่างมาเป็นภาษา Java
ซึ่ง System.out.println() ใช้กันเป็นเรื่องปกติ
บิดา Java เขาจัดวาง println() ให้อยู่เป็นสัดเป็นส่วนอย่างนี้เอง
.
แต่เราต้องยอมรับว่า IDE ปัจจุบันมันฉลาดมาก
บางตัวแค่พิมพ์ S ก็แสนรู้
เดาใจเราออกว่าเราจะพิมพ์ System.out.println();
IDE สมัยนี้มันช่วยเราได้เยอะเลยทีเดียว
ไม่ต้องเสียเวลาพิมพ์ยาวเมื่อยมือ เสียเวลา
แต่ถ้ายังใช้ notepad อยู่ ก็ต้องทนเหนื่อยเอา
.
.
.
.
.
.
.
.
.
.
.
.
ทิ้งท้ายก่อนจากกันไป
<ประชาสัมพันธ์ขายของ>
หนังสือ "โปรแกรมเมอร์ก็รวยได้ ด้วยเส้นทางเอาท์ซอร์สสายดำ"
หนังสือที่จะเล่าเส้นทางสายเอาท์ซอร์สเงินดีรายได้งาม
✔ สำหรับตัวอย่างหนังสือ 👇
PDF: https://drive.google.com/file/d/1tAnMozeYd63dcbBGTQmT_ZrpSaamZS3e/edit
หรือดูจาก youtube: https://youtu.be/Ljf9iJhLcIs
.
รายละเอียดอ่านเพิ่มเติมได้ที่่ 👇
https://www.patanasongsivilai.com/blog/sale_book_rich_with_outsource/
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
เราจะผ่านโควิด-19 ไปกันนะทุกคคนนน
kotlin pdf 在 BorntoDev Facebook 八卦
🔥 "เรื่องอื่นอาจจะประนีประนอมได้ .. แต่เขียนโค้ดสไตล์มั่วซั่ว ประนีประนอมไม่ได้เด็ดขาดดด !"
.
หลายคนน่าจะเคยเจอปัญหากันมาบ้างไม่ว่าจะเป็น
.
🤣 "เมื่อวันก่อนตรูเขียนอะไรลงไปเนี่ยยย !?" จนไปถึง "งงจัด เมื่อเพื่อนร่วมทีมส่งงานมาให้ช่วยดู"
.
ปัญหานี้จะหมดไปถ้าเรารู้ และ เข้าใจสิ่งที่เรียกว่า Coding Style ซึ่งจริง ๆ แล้วในหลาย ๆ ภาษาก็มีให้เราได้อ่านอยู่
.
✅ โดยเจ้าสิ่งนี้จะเป็น "คำแนะนำ" ในการเขียนโค้ดที่ดีของแต่ละภาษา หรือ แต่ละองค์กร ที่ได้มีเกณฑ์ต่าง ๆ กำหนดไว้แล้วนั่นเอง
.
ไม่ว่าจะเป็นเรื่องทั่วไปอย่าง
.
▶️ ควรตั้งชื่อตัวแปรแบบไหน ? ชื่อฟังก์ชันควรเป็นอะไรดี ?
.
▶️ การ Import ของจากข้างนอกมาใช้ อะไรควรทำก่อน หลัง หรือ ไม่ควร ?
.
▶️ จนไปถึง การออกแบบเงื่อนไขการทำงานควรออกแบบอย่างไร ?
.
ซึ่งแน่นอนว่าคำแนะนำที่ดีเหล่านี้จะช่วยให้โปรเจคของเราผ่านไปได้โดยราบลื่นนั่นเอง หากนำมาใช้ในทีมด้วยก็ยิ่งทำให้พวกเราเข้าใจตรงกันได้มากขึ้น
.
"มันเลยเปรียบเสมือนข้อตกลงในการทำงานร่วมกันนั่นเอง <3"
.
แต่จะต้องบอกก่อนนะว่า ไม่ใช่ทุกงานที่เหมาะกับ Coding Style นั้น ๆ หรือ ไม่ใช่ทุกปัญหาจะมีใน Coding Style บอกว่าแก้ไขยังไง หลายครั้งเราอาจจะต้องเพิ่มเติมเอาเอง
.
⚠️ "แต่สิ่งที่เพิ่มเติมจะต้องคุยกันในทีมให้เคลียร์ก่อนเสมอนะ !"
.
ดังนั้นวันนี้เรามาดู Coding Style Guide ของแต่ละภาษาไปพร้อมกันเลยดีกว่า !! (บางภาษาอาจมีตัวน่าสนใจมากกว่า 1 ตัว แอดก็รวมไว้ให้แล้วจ้า)
.
👉 ภาษา Java
.
http://www.oracle.com/technetwork/java/codeconventions-150003.pdf
https://google.github.io/styleguide/javaguide.html
.
👉 ภาษา C
.
http://www.maultech.com/chrislott/resources/cstyle/indhill-annot.pdf
http://www.maultech.com/chrislott/resources/cstyle/Peter_CStyleGuide.pdf
.
👉 ภาษา C++
.
http://www.maultech.com/chrislott/resources/cstyle/Wildfire-C++Style.html
http://www.maultech.com/chrislott/resources/cstyle/CppCodingStandard.html
.
👉 ภาษา Python
.
https://www.python.org/dev/peps/pep-0008/
.
👉 ภาษา C#
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/index
.
👉 ภาษา JavaScript
.
https://github.com/airbnb/javascript
http://google.github.io/styleguide/javascriptguide.xml
https://www.w3schools.com/js/js_conventions.asp
.
👉 ภาษา Dart
https://dart.dev/guides/language/effective-dart/style
.
👉 ภาษา PHP
http://www.php-fig.org/psr/psr-1/
http://pear.php.net/manual/en/standards.php
.
👉 ภาษา Objective-C
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html
.
👉 ภาษา Kotlin
https://kotlinlang.org/docs/reference/coding-conventions.html
.
👉 ภาษา Swift
https://github.com/raywenderlich/swift-style-guide
.
👉 ภาษา Visual Basic.NET
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/index
.
👉 ภาษา Ruby
https://github.com/bbatsov/ruby-style-guide
https://github.com/airbnb/ruby
.
👉 ภาษา R
http://web.stanford.edu/class/cs109l/unrestricted/resources/google-style.html
.
👉 ภาษา Go
https://golang.org/doc/effective_go.html
.
"เรียบร้อย ครบจบทุก Guideline ใครที่อยากทำงานกับทีมง่าย ๆ แนะนำให้ลองใช้กันดูได้เลยจ้า" <3 <3 <3
.
#borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
kotlin pdf 在 How to develop android application to load and read PDF 的八卦
How to develop android application to load and read PDF - Android Kotlin ... This video demonstrates step by ... ... <看更多>