如何以C语言撰写泛型程式？
泛型(Generics)是一种无型別的程式，主要是用在静态型別的语言上。撰写泛型程式的好处是同一个演算法可以套件在不同型別上，减少重覆撰写相同演算法但不同类別的程式码。由于泛型的好处，很多资料结构和演算法的函式库会用泛型程式来实作，一些实例像是C++的STL(StandardTemplateLibrary)、Java(或C#)的Collections等。在C11以前的C不支援实质的泛型，所以在网路上宣称的C泛型程式并不是真的泛型程式，而是用其他语法特性模拟出来的；所以在学习这些「泛型」程式时要注意其手法和限制。一般来说，C的拟泛型程式有以下三种实作方式：指向void的指标(pointertovoid)巨集(macr
为什么要用C语言写物件导向程式？
虽然C语言沒有直接支援物件导向程式的语法，但我们可以在一些真实世界的专案看到具有物件导向思维的C程式码，一些知名的例子像是Linux核心和GTK+等。然而，我们在C语言的教材很少直接探讨这个议题，大部分教材的态度是在教完C语法后就转往C++，像是C程式设计艺术(全华图书)的前半部是C语言，后面就塞入C++来增加版面。那么，我们为什么要用C语言写物件导向程式呢？物件导向是一种程式设计的范式(paradigm)，理论上是抽象的程式设计思维，但却会受到程式语言特性的影响，从每个程式语言的语法就可以看到不同程度的物件特性。对物件导向来说，最基本的是资料(data)和行为(behavior)连动所带来的状态(state)改变；再进一
直接使用程式码来呈现(资料结构和)演算法，往往需注意过多细节，像是型別、阵列长度、存取权限、记忆体管理等，而且程式语言很多，单一语言能满足的客群相对小。有许多演算法的书籍会转而使用虚拟码(pseudocode)来表示，由读者自行将其转为可用的程式码。虚拟码不需在意程式语言的细节，叙述上比较简洁。在虚拟码和程式码之间的转换，需要一段时间的学习才能上手。但学过一段时间的程式设计后，反而会觉得程式码比虚拟码简单，因为编译器或直译器会协助我们找出程式码中的错误，而虚拟码沒有固定的格式，只能由人工阅读来确认是否正确。有时候我们需要撰写虚拟码而非程式码，像是学校考试、学术报告、技术文件等；因此，除了能读懂別人写的虚拟码，最好还是要能自己写虚拟码。虚拟码的风格差异很大，有些会用数学表
程式设计者对JavaScript的态度是毁誉参半，喜欢JavaScript的开发者会说JavaScript跨越网页前后端、桌面端、行动端、物联网，俨然是大一统的程式语言，讨厌JavaScript的开发者会说JavaScript坑坑洞洞超多，为了相容性，旧洞不修又再加新特性，根本就叠床架屋。开发者对JavaScript强烈的情感一部分是来自于JavaScript目前是网页前端实质的(defacto)标准，是写网页程式的必然之恶。为了能在保持相容性的前提下改善JavaScript先天不良的体质，使用JavaScript转译器(JavaScriptTrans-compiler)就成了一个可行的方向。这类工具的思维在于减少手动撰写样板程式码的
我们初学程式设计时，通常会先从最简短的程式码开始，随着学习过程，慢慢地写出更长的程式。但是，我们在学习网页程式时，为了实务面的需求，反而会优先使用一些大而全的网页框架。不过，也有一些轻量级的框架(即微框架microframework)，沒有复杂的专案架构和设定档，可以用单一的命令稿来撰写网页程式，这类轻量级框架，相当适合用来入门网页程式。笔者最近即将着手撰写一些入门级的网页教学，而各位读者可以决定这系列文章所用的教学工具。由于网页本身是语言中立的技术，根据不同目的会选用不同的网页技术。而我们这一系列网页教学的目的是用相短简短的程式码来学习网页程式，减轻学习者的负担，网站效能倒不是我们的第一考量。笔者考量易用性、流行度、资料丰富度等项度，初步选出以下四个框架：Flask
共计85篇文章，17页。