Latest Posts

2024年3月6日 星期三

前端程式設計師必看,2024年JavaScript和TypeScript趨勢解析



在過去的七年裡,JetBrains 一直在進行開發者開發環境調查,努力找出開發者使用概況和主要使用技術。原始數據和分析報告我們都會在這篇文章提到,以便我們都能了解開發環境中發生的事情,今年的調查結果,很明顯重點是 JavaScript 和 TypeScript



調查輪廓

我們的 2023 年開發者開發環境調來自世界各地 26,348 名開發者的見解,從程式語言、工具和技術到有用的人口統計和有趣的事實。 



👉👉JavaScript 見解

【JavaScript 使用趨勢

該調查再次報告  JavaScript  成為 2023 年最常用的程式語言,連續七年成為使用最多的語言。 這可能是因為  JavaScript 的門檻比較低,為許多前端 Web 開發提供了容易使用的條件。 有趣的是,它的使用占比在過去三年中每年都略有下降,這可能是未來變化的預兆,因為這種下降與 TypeScript使用占比的上升同時發生。





JavaScript 用戶通常會開發什麼?

80% 的 JavaScript 開發人員主要是網頁開發;使用  JavaScript  開發的第二個最常見的產品是應用程式(用於小任務的應用程式)。 只有少數使用 JavaScript 來開發其他類型的軟體。86% 的  JavaScript 開發人員從事前端項目,34% 也參與後端專案。




JavaScript 和 TypeScript 程式碼編輯器和 IDE

調查結果顯示,受訪者有很大一部分 (51%) 使用 Visual Studio Code進行  JavaScript 和TypeScript 開發。第二受歡迎的工具是 WebStorm (21%),緊隨其後的是「另一個基於 IntelliJ 的 IDE」(16%),也稱為 JetBrains IDE,其中包括 PyCharm、IntelliJ IDEA、GoLand 和 PhpStorm。



如果您想知道是否應該使用程式碼編輯器或 IDE,答案很簡單:您可以使用兩者,並根據您正在處理的任務在它們之間進行切換。對於快速編輯或較小的項目,程式碼編輯器可能是更好的選擇,而在處理大型專案或複雜任務時,IDE 往往更多人喜歡。

JavaScript 框架首選

JavaScript框架和函式庫在 JavaScript開發者社群中很流行,只有 8% 的  JavaScript 開發者表示他們不使用框架和函式庫。框架和函式庫協助簡化開發複雜和互動Web程式。在這些框架中,最受歡迎的是React,有 57%的 JavaScript 開發人員用React;第二個受歡迎的 JavaScript 框架是 Vue(32%),第三位是 Next.js(27%)。 Angular 和 Express(20%)並列第四名。框架的選擇很大程度上取決於專案的特定要求和團隊的偏好。




React最受歡迎的原因

React 於 2013 年 5 月 29 日首次發布。雖然它不是第一個框架,但它確實受益早期推出並成為第一個具有良好功能的大型框架。又因為早期很大量開發人員的使用, 這些開發人員希望React能滿足他們的需求,React因此不斷發展,滿足更多開發人員,也成功站穩市占率。

React 與其他 UI 框架一樣,遵循基於元件的架構,其中 UI 被建構為可重複使用元件。 這種模組化方法使管理和維護程式碼變得更加容易,並提高了應用程式不同部分的程式碼可重用性。

React使用 JSX,它是 JavaScript 的語法擴充。 JSX 允許開發人員在 JavaScript 中開發類似 HTML的程式碼,由於大多數使用者熟悉相關概念,因此開發起來更加容易。

React 非常靈活,可用於各種專案類型,小型單頁應用程式到大型複雜的 Web 應用程式都適用,其靈活性使其成為各種開發場景的好選擇。

模組捆綁器(Module bundlers)

模組捆綁器是 JavaScript 開發人員的寶貴工具。可以讓開發者以互相了解的方式打包檔案和資料庫之外,它們還能夠顯示出彼此的依賴關係。就像解析器一樣,模組捆綁器通常會在初始化時檢查所有依賴關係的檔案,確保運作程式時所需的檔案是否可用,除此之外,它會處理模組中的每個檔案,並為它們建構一個依賴關係圖。

完成後,模組捆綁器會將這些模組合併到一個檔案中,該檔案在「output」配置參數中指定、並維護所有模組的登錄冊,以便開發者可以在需要時正確呼叫/執行它們。




2023 年的頂級模組捆綁器是 webpack,有 57% 的  JavaScript  開發人員使用它。Webpack 已經存在 10 年了,並且不斷發展以滿足開發者不斷變化的需求。也就是說,隨著人們尋求透過更簡單的設定獲得更好的效能,我們開始看到 Vite (38%) 和 esbuild (11%) 等替代方案得到更廣泛的採用。

JavaScript 開發人員面臨的挑戰

 JavaScript 仍然存在一些挑戰,但社群也持續致力於解決這些問題。例如,非同步模型隨著 async/await 的引入而得到改進。隨著主要函式庫和框架日趨成熟並互相汲取靈感,函式庫和框架的疲勞感有所減緩。無論你喜歡與否, JavaScript 缺乏強類型(strong typing) ,這仍然是一個有待解決的問題,但隨著 TypeScript的出現,提供了一個輕鬆實施一種替代方案。



👉👉TypeScript 見解

TypeScript 的採用和成長

 JavaScript 是一種動態類型語言,目前已經大量使用,但這代表開發人員普遍認為城市出錯只能在運行時發現。現有一種更為安全的TypeScript的使用趨勢,這可以提升整體開發人員體驗以及開發人員對程式碼的信心。 這不僅可從TypeScript多年來越來越多的採用中看出,也可以從開發人員使用TypeScript的用途上與JavaScript的重疊亦可看出端倪。




為什麼人們會從 JavaScript 轉向 TypeScript?】

TypeScript是一種具有靜態類型的  JavaScript  超集合語言,目的與 JavaScript 專案良好互通,並且可以幫助團隊逐步遷移現有專案。TypeScript也遵循 ECMAScript 標準,支援最新的 JavaScript功能。這表示開發人員可以在瀏覽器廣泛支援之前,就能提前使用未來 JavaScript版本規格的功能。 TypeScript 目前的穩定版本是 5.3.2,TypeScript5.4 預計將於 2024 年 3 月發布。



👉👉結論

 JavaScript 和 TypeScript開發生態系統不斷發展。 它已不再是2016年的模樣 - 技術、框架、語言和函式庫,現在開始日趨成熟,開發人員的喜好日漸中出現了共通點和趨勢。 像 WebStorm 這樣的工具將繼續發展和改進,以幫助開發人員充分利用他們的程式碼並有效地使用  JavaScript 和 TypeScript



💪💪💪課程推薦







2024年2月27日 星期二

GitHub Copilot簡介

作者:許薰尹  精誠資訊/恆逸教育訓練中心資深講師
出刊日期:2024/2/21


GitHub Copilot 是一個由 GitHub 和 OpenAI 合作開發的人工智慧型程式設計助手。這個工具可以幫助開發者更快速、更高效地編寫程式碼。它使用機器學習模型,來理解和預測開發者打算寫的程式碼,從而自動生成程式碼的建議。 GitHub Copilot 可以直接支援多種流行的程式設計工具,例如Visual Studio 2022、 Visual Studio Code、JetBrains、GitHub Codespaces等等。它能夠理解多種不同程式語言的與法和應用程式設計的框架,並能根據開發者已經寫的代碼上下文提供程式碼建議。

此外,GitHub Copilot 還能不斷地從公開的代碼庫中進行學習,意味著它能夠提供最新的程式設計語法和社計慣例。不過,它也可能提供不完美的代碼,所以程式設計師還是需要檢視、調整由 Copilot 自動生成的程式碼。 如果你還沒開始使用GitHub Copilot,那麼就隨著本文的步驟,開始來了解它吧。

GitHub Copilot申請

要申請 GitHub Copilot首先要有GitHub 帳號,網址在:「https://github.com/」,點選畫面中的「點選 Sign up for GitHub」按鈕,請參考下圖所示:

2024年2月23日 星期五

ASP.NET Core Web API/Minimal API微服務開發實務範例、如何使用REST Client測試Minimal API





作者:高光弘
  精誠資訊/恆逸教育訓練中心資深講師



在現代軟體開發中,建立可靈活擴展且易於維護的應用程式是一個關鍵挑戰。為了滿足這些需求,許多開發者轉向微服務架構,並使用Web API/Minimal API作為開發和部署應用程式的實作手段。


Minimal API是一種以簡單、直觀的方式建立輕量級Web API的方法。相較於傳統的Web API,Minimal API更加精簡,減少了冗餘程式碼和配置,使開發者能夠專注於實現核心商業邏輯。


本文將介紹如何使用REST Client來測試Minimal API。REST Client是一個強大的工具,可以幫助開發人員模擬HTTP請求和回應,從而驗證API的正確性和可靠性。


2024年2月19日 星期一

TIOBE 2024年2月語言榜單發布| Go 程式語言首次衝進熱門程式語言前八名

近日,2TIOBE程式語言榜單已最新出爐,一起來看看有什麼值得開發者觀察的新變化!
 

Go 語言進入前 10 大,刷新自身最高排名

近三個月來,TIOBE名單的前五名幾乎沒有變動,即 PythonCC++Java C#,此後的第 6-10名雖然會依些不同,總體而言變動不大;但本月有些不同:Go 語言進入 Top10,上升至第八名,刷新了其在 TIOBE 榜單的最高排名。
 
或許會有人疑惑曾兩度獲得 TIOBE 年度程式語言的 Go,第八名竟已是史上最高排名?


 

2024年2月15日 星期四

【強大的AI程式設計助手】使用GitHub Copilot提高Coding生產力





作者:許薰尹  精誠資訊/恆逸教育訓練中心資深講師



當前,人工智慧的進步正在全面改變科技界的格局,並重新塑造世界運轉的模式,影響著各個組織和團隊的運作方式。若能充分善用這些人工智慧的進步,將如同催化劑般顯著提升全球開發人員的生產力。對於開發人員而言,將人工智慧的功能融入他們所熟悉的開發工具中,不僅能夠加強協同作業、開發、測試和部署產品的能力,更能以更快速、更有效率的方式完成這些任務。

 

GitHub Copilot 是由GitHubOpenAI合作開發的AI程式設計助手,旨在協助開發者更快、更高效地編寫程式碼。它支援多種程式語言和開發工具,並能自動生成程式碼建議。儘管它不斷學習並提供最新語法,程式設計師仍需檢視和調整生成的程式碼。

 

GitHub Copilot 是一項服務,能夠與所有熱門的程式設計語言搭配使用。在啟動不到兩年的時間內,已有46%的新程式碼是由人工智慧撰寫的,這顯著提高了整體開發人員的生產力,增加了55%。同時,有74%的開發人員表示能夠更專注於帶來滿足感的工作上。

 

GitHub Copilot 使用公開來源的自然語言和數十億行原始程式碼 (包括公用 GitHub 存放庫中的程式碼進行訓練,以了解您的專案之複雜細節,這可讓 GitHub Copilot 提供更多的內容感知建議。在使用 GitHub Copilot 的提示工程簡介中,您可以建置提示以讓GitHub Copilot生成實用的建議。這些提示是指導生成程式碼的指引或建議集合,有助於Copilot產生特定的回應。因此,GitHub Copilot輸出的品質取決於您如何建構這些提示,學習如何正確地下提示將會是一個相當重要的課題。

 

如果您有興趣使用GitHub Copilot,可參考本文的步驟開始使用。


2024年2月6日 星期二

從波音737 Max客機艙門空中爆落討論品質管理

 2024年1月5日,阿拉斯加航空1282班機,自美國波特蘭國際機場起飛約20分鐘後,一扇未使用的緊急出口艙門突然爆開掉落,機身一側出現一個大洞 (圖一),飛機迅速失去了機艙氣壓,旅客的手機、衣物以及其他用品,也同時被吸出機艙外,掉落地面。波音737 Max客機的巡航高度約為38,000英呎,當時這架波音737 Max 9客機仍在攀升過程中,高度約為16,300英呎 (約為5,300公尺,也就是10棟101大樓疊起的高度) ,外界空氣壓力約為0.5個大氣壓。

圖一:737 Max機身一側出現一個大洞(圖源:Daily Mail)


事故發生後數小時後,阿拉斯加航空表示,將停飛機隊中所有65架波音737 Max 9飛機,直到機械師能夠仔細檢查每架飛機。之後不久,聯邦航空管理局(FAA, Federal Aviation Administration)隨後也要求同機型的班機停飛,並進行徹底檢查。

目前世界各地約有200架MAX 9投入運營,美國就佔171架,阿拉斯加航空65架、聯合航空(United Airlines)79架是最大戶。在美的MAX 9復飛前每架需停飛受檢4到8小時,阿拉斯加航空與聯合航空這兩天為此取消約440個航班。

專案管理涵蓋十大知識領域,其中一個重要的知識領域就是:品質管理。產品品質要達到既定水準,須落實三個「過程」:「規劃品質」、「管理品質」、「管制品質」,此次事件原因雖仍在調查中,但一定無法避免的是「肇因分析」,例如:使用魚骨圖從「人」、「機」、「料」、「法」、「環」、「測」各個面向,召集設計、製造、組裝、檢驗的跨領域的討論,以便找出真正原因,另外這次剝落的艙門是由外包商Spirit AeroSystems製造與安裝,也呼應了「採購外包風險高」的一般性認知;因此,肇因分析更要從甲乙雙方的合約、規範、接收準則…以及甲乙雙方的溝通方式等,更深入調查、討論,否則很可能重蹈覆轍。

737 MAX系列的MAX 8於2018、2019年分別在印尼與衣索比亞發生兩起重大空難導致346人罹難,MAX系列2019年初陸續在全球停飛,波音公司耗費20個月與各國飛安機關合作,修改MAX系列的飛控軟體及其他部件。到2020年底各地MAX系列復飛時,波音已因此損失約200億美元。這也呼應了「品質成本」中「外部失效成本」(產品在客戶端發生品質問題、廠商所需支付的成本) 通常是個無底洞!

圖二:從高空墜落的手機 (翻攝自Seanathan Bates/X、波音官網)


有趣的是:此次事件旅客被吸出機外的物品中,有一支iPhone手機,從等同10棟101大樓疊起的高度噴飛到機外,在地面靠著定位找到手機,竟在一處草地找到了這支手機!脫落的艙門尚未找到之前,從機上掉落的手機反倒先被發現 (圖二)。且神奇的是,手機功能竟還保持正常,只有螢幕保護貼有受損,電量也還有約一半。

波音的客機與蘋果手機,都是美國一流的公司的產品,但其品質正好做了個強烈的對照!


您可在下列課程中了解更多技巧喔!

2024年1月31日 星期三

.NET 8與C# 12新特性導覽

 

.NET 8與C# 12新特性導覽

羅慧真 Anita Lo

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:程式設計





2023年11月微軟已正式公布 .NET 8 及 C# 12,每一次版本的更新都帶來更方便的語法、執行效能和跨越更多種平台類型 (例如.NET 7公布的.NET MAUI,寫一次程式可使用在 Windows、Andriod、iOS…. 等多種移動式平台),本篇文章將介紹C#12幾項亮眼的更新。

集合表達式

C# 傳統的陣列或集合語法,根據不同情況會有以下幾種不同的寫法:

string[] s1 = new string[] { "a", "b", "c" };
List<string> s2 = new() { "d", "e", "f" };
string[] s3 = Array.Empty<string>();
PrintArray(new string[] { "g", "h", "i" });

其實筆者常常被這[]、{}等符號搞得昏頭轉向的 …


C#12 集合運算式的目的是希望簡化此類語法,統一使用 [],當您使用 Visual Studio 2022 v17.8 以上的版本並開啟 .NET 8 專案時,編輯工具就會建議您使用集合運算式如下圖:



當然這只是建議,若您不理會這個建議,並不會產生編譯錯誤的情況。
以下程式是經過【使用集合運算式】修改之後的程式碼:

string[] s1 = ["a", "b", "c"];
List<string> s2 = ["d", "e", "f"];
string[] s3 = [];
PrintArray(["g", "h", "i"]);

另外,您也可以使用(散佈運算子) 將陣列/集合的元素複製到新的變數位置,語法如下:

string[] s5 = [.. s1, .. s2, .. s3];

列印結果:




主要建構函式

「主要建構函式」首次是出現在record類型,語法如下:

record Student(int id, string name) {
    public int ID { get; set; } = id;
    public string Name { get; set; } = name;
    public override string ToString()
    {
        return "$Student: {ID} -- {Name}";
    }
}

直接在定義類型名稱後面加上建構函式的括號,並指定其參數。


現在C# 12 可以使用在 class 、 struct 類型:

class Manufacturer (string ID, string CompanyName) {
    public string ID { get; set; } = ID;    
    public string CompanyName { get; set;} = CompanyName;

    public override string ToString() =>
         $"Manufacturer: {ID} -- {CompanyName}" ;
    
}

struct CreationDate (int year, byte month, byte day=1 { 
    public DateOnly Date{ get; set; } = new DateOnly(year, month, day);
    public int Year { get; set; } = year; 
    public byte Month { get; set; } = month;
    public byte Day { get; set; } = day;

    public override string ToString() => $"Birthday: {Date}";
    
}

using 別名可定義任何類型

using 別名用來簡化冗長的命名空間,但僅限於命名空間、類型 (類別、結構、泛型 …)

//基本使用方式
using System.Runtime.CompilerServices;
//namespace 的別名
using IO = System.IO;  
//class 的別名
using regex =  System.Text.RegularExpressions.Regex;
using dt = System.DateTime;
using ListString = System.Collections.Generic.List<string>;

C# 12 之後可以使用在更多種類型上:

//C#12 tuple 的別名
using moveTo = (int x, int y);
//C#12 Array
using stringArray = string[];

.NET 8 / C#12不僅只更新這些功能,而C#語法從3.0版到現在的12版已經有更多的改變,您的.NET目前停留在哪個版本啊?

新的一年,給自己新的目標,以下課程可以讓您攝取更多新技術的養分喔!


您可以在【UN392】.NET關鍵技術全解析 課程當中學到C#的多項重大更新,以及如何從傳統WPF、Windows Forms專案升級到.NET,此課程還將介紹背景工作服務與歷程紀錄(警告訊息、錯誤訊息的Log)以及應用程式的組態、部署與發佈,以幫助您掌握完整的應用程式開發流程。透過這些課程內容,您將能夠建立跨平台的應用程式,並學習使用各種相關的技術和工具,讓您能夠在開發應用程式的過程中更加得心應手。

另外,在跨平台方面可以參考【UN299】.NET MAUI桌上與行動裝置跨平台開發 課程,它的前身是由Xamarin.Forms演進而來。使用C#和XAML撰寫一次代碼即可建構可執行於Android、iOS、macOS、Windows上的App。此課程將使用C#、XAML及Visual Studio 2022開發.NET MAUI桌上與行動裝置的應用程式,您將學會如何使用XAML定義UI畫面,了解多種版面配置及使用者經驗,應用資源與樣式達到UI一致性及共享的特質,以及資料存取、WEB API的連結,具備硬體裝置的存取能力,最後知道如何將完成的App部署及預備。


您可在下列課程中了解更多技巧喔!