<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[C - 葵中剑]]></title><description><![CDATA[Just Sword Wang's Blog]]></description><link>https://swordair.com/</link><image><url>https://swordair.com/favicon.png</url><title>C - 葵中剑</title><link>https://swordair.com/</link></image><generator>Ghost 3.42</generator><lastBuildDate>Mon, 05 Aug 2024 01:00:06 GMT</lastBuildDate><atom:link href="https://swordair.com/tag/c/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[闲话注释风格]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>《一个码农的自我修养》一书花了相当多的篇幅来阐述代码注释的重要性，可见注释真的很重要！好吧，其实没这本书～</p>
<p>不过，应该没人能质疑注释的重要性，因为没多少人愿意接手和维护一堆纯粹的逻辑符号，虽然个人项目另当别论，但不是每个人的记忆力都能突破天际地记得“原来我曾经写过这样的代码”。所以，我个人对那些写了一堆代码没一句注释的伪牛人是嗤之以鼻的。但写这篇文章的自己可能也是相当的小题大做，其实注释只要是简明清楚，都应该来者不拒，而没必要太注重形式。一个团队还是保持某一种统一的风格比较好，在大框架下的求同存异，每个人也都应该保留适合自己的空间。</p>
<p>本文旨在罗列一些笔者遇到的注释，仅仅只是闲谈。每个人都有适合自己的风格，无所谓好坏。</p>
<p>无论是C风格的注释，还是后来C++增加的单行注释，我们都再熟悉不过了：</p>
<pre><code>/* Basic Comment */
// Basic Comment
</code></pre>
<p>但个人而言，单行注释我更多地是用在调试上，我几乎不用单行注释来写注释。单行注释常常被用在画框上，但个人感觉太粗，影响视觉。而且真正的注释和调试代码最好在视觉上分开，所以我几乎不用，以至于到后来看到自己顺手写的单行注释会非常别扭，出于一种强迫下重新改回C语言的那种风格。</p>
<pre><code>///////////////////////////////////////
//
//
// This is a comment hat
//
//
///////////////////////////////////////
function swordair(){}

///////////////////////////////////////
// This</code></pre>]]></description><link>https://swordair.com/on-comment-style/</link><guid isPermaLink="false">59fe0cf19855590d8c914761</guid><category><![CDATA[C]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Wed, 14 Nov 2012 17:24:01 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>《一个码农的自我修养》一书花了相当多的篇幅来阐述代码注释的重要性，可见注释真的很重要！好吧，其实没这本书～</p>
<p>不过，应该没人能质疑注释的重要性，因为没多少人愿意接手和维护一堆纯粹的逻辑符号，虽然个人项目另当别论，但不是每个人的记忆力都能突破天际地记得“原来我曾经写过这样的代码”。所以，我个人对那些写了一堆代码没一句注释的伪牛人是嗤之以鼻的。但写这篇文章的自己可能也是相当的小题大做，其实注释只要是简明清楚，都应该来者不拒，而没必要太注重形式。一个团队还是保持某一种统一的风格比较好，在大框架下的求同存异，每个人也都应该保留适合自己的空间。</p>
<p>本文旨在罗列一些笔者遇到的注释，仅仅只是闲谈。每个人都有适合自己的风格，无所谓好坏。</p>
<p>无论是C风格的注释，还是后来C++增加的单行注释，我们都再熟悉不过了：</p>
<pre><code>/* Basic Comment */
// Basic Comment
</code></pre>
<p>但个人而言，单行注释我更多地是用在调试上，我几乎不用单行注释来写注释。单行注释常常被用在画框上，但个人感觉太粗，影响视觉。而且真正的注释和调试代码最好在视觉上分开，所以我几乎不用，以至于到后来看到自己顺手写的单行注释会非常别扭，出于一种强迫下重新改回C语言的那种风格。</p>
<pre><code>///////////////////////////////////////
//
//
// This is a comment hat
//
//
///////////////////////////////////////
function swordair(){}

///////////////////////////////////////
// This is a comment hat
function swordair(){}
</code></pre>
<p>所以本文中的单行注释，只是一笔路过。更重要的原因是，CSS里无法使用——虽然很多人提出在CSS里支持单行注释，但直到现在也没有结果。原因很简单，因为CSS里经常出现 <code>http://</code> 这样的字符串，解释器需要做额外区分。而且即使浏览器支持了，当前的众多CSS格式化工具和压缩器也都需要改进算法，所以CSS的单行注释还是遥遥无期的事情。所以，即使从统一性角度看，似乎也应该选择最为古老的注释方式 <code>/**/</code></p>
<p>除了最为常见的单行 <code>/× comment ×/</code> 以外，下面这种多行的块形注释也是比较常见，特别是在Java里。这种注释方式对于函数，类，以及文档都非常有效，因为它提供了足够多的信息量：</p>
<pre><code>/*
 * Group comment block.
 * Ideal for multi-line explanations and documentation.
 */
</code></pre>
<p>另一种较为常见的注释类似于一个大标题，非常醒目，类似于HTML里 <code>h1</code> 的效果：</p>
<pre><code>/*------------------------------------*\
   COMMENT CONTENTS
\*------------------------------------*/
function swordair(){}
</code></pre>
<p>当然，如果觉得这样的标题太大，也完全可以用小一些的标题，甚至组合大小标题达到层次的效果。常见的小标题格式可能是下面这样的：</p>
<pre><code>/* common */
/* --------------------------------------------- */
function swordair(){}
/* --------------------------------------------- */
</code></pre>
<pre><code>/* Generic Table
---------------------------------------------------------- */
function swordair(){}
</code></pre>
<p>也有人喜欢用等号代替减号，这样的标题视觉上更加突出。而且长度上的不同也可以用作层次的划分。</p>
<pre><code>/* ==========================================================================
   Section comment block
   ========================================================================== */

/* Sub-section comment block
   ========================================================================== */
</code></pre>
<p>大部分的注释就是由 <strong><code>/**/</code></strong> 配合<strong>星号<code>*</code></strong> / <strong>减号<code>-</code></strong> / **等号<code>=</code>**组合起来划分区域的。因为这些字符足够简单，能制造边框效应。只要你愿意，完全可以在这些条条框框里留下任何你喜欢的信息：</p>
<pre><code>/*SwordAir*/
/***********************************************************
 *                                                         *
 *    ***                          *     *                 *
 *   *                             *    * *    *           *
 *    *                            *   *   *               *
 *     *  *   *   *  ***  ** *** ***   *   *   *  ** ***   *
 *      *  *  **  * *   *  **   *  *  *******  *   **      *
 *       *  **  **  *   *  *    *  *  *     *  *   *       *
 *   ****   *   *    ***   *     ** * *     *  *   *       *
 *                                                         *
 ***********************************************************/
</code></pre>
<p>嘛～献丑，其实我知道自己的代码画非常难看～希望有一天能稍微拿的出手一些:)</p>
<p>实际上，还有更多字符可以参与到注释中来，而且它们的效果显而易见。在没有任何说明的情况下，任何人都能一看就明白：</p>
<pre><code>/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
function swordair(){}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
</code></pre>
<p>混合文字和箭头的方式也算是挺常见的，而且往往效果很好。你能很直观的看到代码从哪里开始到哪里结束。</p>
<pre><code>/* ↓↓↓ Function Start ↓↓↓ */
function swordair(){}
/* ↑↑↑ Function End ↑↑↑ */
</code></pre>
<p>不只是箭头，三角形也表示一种同样的意思：</p>
<pre><code>/* ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼ */
function swordair(){}
/* ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ */
</code></pre>
<p>其他字符也一样。当然箭头和三角都是比较常见的，之所以常见，也是有原因的。其一是因为直观，其二，其他的一些字符可能在编辑器里<strong>乱码</strong>，这样反而让代码混乱。如果是用win7或者如aptana，遇到乱码的情况要少很多。但在winXP下，notepad++在等宽字体的配置下也只能很好地显示几种，箭头和三角都是其中之一。</p>
<p>不过，在网页上，它们的显示完全不成问题。它们可以说是代码注释里的非主流。</p>
<pre><code>/* ☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰☰ */

/* ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ */

/* ✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗✗ */
</code></pre>
<p>好吧,最后这几个，连非主流都算不上，其实完全没人用～ Just For Fun!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[概念的原点]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>人的认知是从概念开始的，所以人的知识结构总是再用已知的或者是已理解的东西去构建和引申那些未知的和不理解的。这话有些长，但结构问题却在不断尖锐的铸建过程中愈发凸显——说白了就是基础概念的认知。就如同带三点水的汉字很大一部分，原本都只是古代的河流名而已。</p>
<p>然后我就想到了那个神奇的字眼——<strong>指针</strong>。<br>
多少有些庆幸当初还好学校没定到谭浩强的C语言书，不然毒害了一代又一代程序员的语法书可能也会把我搞死(当然观点不同，也有很多人喜欢谭浩强的)。幸好读到的是一本薄薄的但是写的却不错的C教材。至今记忆深刻的是其对于“指针”一词给于我的简洁到近乎暴露甚至是偏差的概念——</p>
<p>什么是指针？<strong>指针===地址</strong>。<br>
存放指针，也就是存放地址的变量叫做<strong>指针变量</strong>，并且人们常常简称这些变量为指针。</p>
<p>如果baidu下指针，又会出现那些过于繁琐和修饰的定义。寄存器？内存？数？当然，变量是在寄存器里，地址指的确实是内存，其值也确实是一个数，但这一切的解释，却全部都是在混淆指针和指针变量的前提之下的。再多的绕圈子，也比不上指针就是地址这样的直白。</p>
<p>这次回过头来，要重新清洗下自己一知半解的概念。HTML和CSS里的诸如文档流、浮动、定位、优先级、继承等概念。一段实际应用后，理解总是加深一层。有了具体的使用后，似乎抽象的定义比具体的描述更加容易理解和记忆。在过去的2周里，对浮动、</p>]]></description><link>https://swordair.com/the-origin-of-the-concept/</link><guid isPermaLink="false">59fe0cf19855590d8c9146da</guid><category><![CDATA[C]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Wed, 04 Aug 2010 11:09:29 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>人的认知是从概念开始的，所以人的知识结构总是再用已知的或者是已理解的东西去构建和引申那些未知的和不理解的。这话有些长，但结构问题却在不断尖锐的铸建过程中愈发凸显——说白了就是基础概念的认知。就如同带三点水的汉字很大一部分，原本都只是古代的河流名而已。</p>
<p>然后我就想到了那个神奇的字眼——<strong>指针</strong>。<br>
多少有些庆幸当初还好学校没定到谭浩强的C语言书，不然毒害了一代又一代程序员的语法书可能也会把我搞死(当然观点不同，也有很多人喜欢谭浩强的)。幸好读到的是一本薄薄的但是写的却不错的C教材。至今记忆深刻的是其对于“指针”一词给于我的简洁到近乎暴露甚至是偏差的概念——</p>
<p>什么是指针？<strong>指针===地址</strong>。<br>
存放指针，也就是存放地址的变量叫做<strong>指针变量</strong>，并且人们常常简称这些变量为指针。</p>
<p>如果baidu下指针，又会出现那些过于繁琐和修饰的定义。寄存器？内存？数？当然，变量是在寄存器里，地址指的确实是内存，其值也确实是一个数，但这一切的解释，却全部都是在混淆指针和指针变量的前提之下的。再多的绕圈子，也比不上指针就是地址这样的直白。</p>
<p>这次回过头来，要重新清洗下自己一知半解的概念。HTML和CSS里的诸如文档流、浮动、定位、优先级、继承等概念。一段实际应用后，理解总是加深一层。有了具体的使用后，似乎抽象的定义比具体的描述更加容易理解和记忆。在过去的2周里，对浮动、继承、行高，都有些额外的认知。过段时间整理出来。</p>
<p>我也明白，无论如何深入这些概念，都不能带来什么生产力。但是既然自己已经决定走这条路铸剑，就有理由把这些基础概念打扎实些。至少不至于让自己边走还要边回头眺望。</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[JavaScript和C的数学解题]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>这段时间，怿飞的博客上有一篇<a href="http://www.planabc.net/2010/05/26/solving_the_mathematical_problem_using_javascript/">用 JavaScript 解数学题</a>，代码很简练优雅。于是突然想用C写写看，因为很久没写，就权当是练习也挺不错啊:)</p>
<p><strong>题目</strong>是这样的：一个六位数，分别用2，3，4，5，6乘它，得到的五个新数仍是由原数中的六个数字组成，只是位置不同，则此六位数是多少？</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

#define DIGIT 6
#define MULTI 5

void swap( char *a, char *b ){
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;</code></pre>]]></description><link>https://swordair.com/solving-mathematical-problem-in-javascript-and-c/</link><guid isPermaLink="false">59fe0cf19855590d8c9146d2</guid><category><![CDATA[Algorithm]]></category><category><![CDATA[C]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Tue, 22 Jun 2010 16:22:40 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>这段时间，怿飞的博客上有一篇<a href="http://www.planabc.net/2010/05/26/solving_the_mathematical_problem_using_javascript/">用 JavaScript 解数学题</a>，代码很简练优雅。于是突然想用C写写看，因为很久没写，就权当是练习也挺不错啊:)</p>
<p><strong>题目</strong>是这样的：一个六位数，分别用2，3，4，5，6乘它，得到的五个新数仍是由原数中的六个数字组成，只是位置不同，则此六位数是多少？</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

#define DIGIT 6
#define MULTI 5

void swap( char *a, char *b ){
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

void bubbleSort( char arr[] )
{
    int i,j;
    for(i = 0; i &lt; DIGIT; i++){
        for(j = 0; j &lt; DIGIT-1; j++){
            if ( arr[j] &gt; arr[j+1] ){
                swap( arr+j, arr+j+1 );
            }
        }
    }
}

int main(){
    int num, numCopy, i, j, ind;
    int mul[MULTI] = {2,3,4,5,6};
    char indStr[DIGIT+1];
    char StrToCmp[DIGIT+1];
    for( num = 1000000/6; num &gt;= 100000; num-- ){
        numCopy = num;
        for( i = 0; i &lt; DIGIT; i++ ){
            StrToCmp[i] = numCopy%10+48;
            numCopy /= 10;
        }
        StrToCmp[DIGIT] = '\0';
        bubbleSort( StrToCmp );
        for( i = 0; i &lt; MULTI; i++ ){
            ind = num * mul[i];
            for( j = 0; j &lt; DIGIT; j++){
                indStr[j] = ind%10 + 48;
                ind /= 10;
            }
            indStr[DIGIT] = '\0';
            bubbleSort( indStr );
            if( strcmp( StrToCmp, indStr )){
                j = 0;
                break;
            }
        }
        if(j){
            printf( &quot;This number is %d\n&quot;, num );
        }
    }
    getchar();
    return 0;
}
</code></pre>
<p>无奈水平不高，用C写费了不少事。主要是排序(总觉得这里用个qsort会很别扭)以及转换。中间的转换步骤因为又有段时间不做题的关系，有点生疏。不过最后还是捣鼓出来了，尽管写的比较简陋~。</p>
<p><strong>答案是：142857。</strong></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[再燃ACM]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>自大学时代在ZOJ上最后做了第7道ACM的题目之后，已经过了4年多的时间。现在想来那时真的不懂得如何放置自己的精力。<br>
这次同事辞呈去浙大考研，这么一次偶然的机会，我们俩就跑到ZOJ上。我点开了那个几乎快被我忘记的帐号，记录里还是那七道题，真是令人怀念。</p>
<p>刚刚学C，指针都还搞不清楚的时候那会，记得即使是最简单的题目，都会出好几次Wrong Answer。举步维艰地做了7道题之后，心思就不知道去了哪里。之后虽然学了数据结构、算法，却再也没摸过ACM。直到现在，拾起模糊的C，打开Dev C++，那种 “好吧，让我们再来干掉一道题吧” 的感觉居然又涌了上来。</p>
<p>于是就开始从同事推荐的Beginner开始做起，练习基本的输入输出，偶尔拿几道AC率20%的题活动下似乎是快锈掉的头脑。尽管算法什么的真的早就已经不记得多少，但是和当年做完全是两样的感觉——当年还在纠结怎么输入输出数据，现在则真的是在想法子解决问题。</p>
<p>写着最初学习的C语言，让我又开始认真思考这些年自己的轨迹。从C，C++，C#，Java，JS，PHP，Ruby，AS这一路接触下来，回过头来安安心心地用C做几道ACM的题目，真的是有一种返璞归真的感觉。学习新的东西的同时，不可避免的在渐渐遗忘那些印象不深的拼拼凑凑的知识。以前不曾深刻体会，</p>]]></description><link>https://swordair.com/acm-reburn/</link><guid isPermaLink="false">59fe0cf19855590d8c9146cb</guid><category><![CDATA[C]]></category><category><![CDATA[Algorithm]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Fri, 07 May 2010 16:05:33 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>自大学时代在ZOJ上最后做了第7道ACM的题目之后，已经过了4年多的时间。现在想来那时真的不懂得如何放置自己的精力。<br>
这次同事辞呈去浙大考研，这么一次偶然的机会，我们俩就跑到ZOJ上。我点开了那个几乎快被我忘记的帐号，记录里还是那七道题，真是令人怀念。</p>
<p>刚刚学C，指针都还搞不清楚的时候那会，记得即使是最简单的题目，都会出好几次Wrong Answer。举步维艰地做了7道题之后，心思就不知道去了哪里。之后虽然学了数据结构、算法，却再也没摸过ACM。直到现在，拾起模糊的C，打开Dev C++，那种 “好吧，让我们再来干掉一道题吧” 的感觉居然又涌了上来。</p>
<p>于是就开始从同事推荐的Beginner开始做起，练习基本的输入输出，偶尔拿几道AC率20%的题活动下似乎是快锈掉的头脑。尽管算法什么的真的早就已经不记得多少，但是和当年做完全是两样的感觉——当年还在纠结怎么输入输出数据，现在则真的是在想法子解决问题。</p>
<p>写着最初学习的C语言，让我又开始认真思考这些年自己的轨迹。从C，C++，C#，Java，JS，PHP，Ruby，AS这一路接触下来，回过头来安安心心地用C做几道ACM的题目，真的是有一种返璞归真的感觉。学习新的东西的同时，不可避免的在渐渐遗忘那些印象不深的拼拼凑凑的知识。以前不曾深刻体会，但现在多少能够明白，程序，都一样。</p>
<p>现在的进度比较快吧。每天大概5道题，半个月过去了，已经快逼近百道。等到基础题练习的差不多了，速度就会慢到几天甚至几个周才一道吧。这段时间还能温习下经典算法，从箱子里挖出那本大学时的算法分析教材，居然还能看的津津有味。</p>
<p>即使是计算机这一飞速变化的领域，也存在着很多经久不变的东西。网络的飞速发展，同样有相对稳定的存在。不应该被技术的更替牵着鼻子走，独树一帜专修广达，才是正途。</p>
<p>“程序员要有领域”，留下这句话考研去的同事，祝他一切顺利，他引用的这句话，我也深以为然。</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Hello world!]]></title><description><![CDATA[<p>第一篇文章总是要有些来龙去脉，就如同第一个程序总是要来个Hello world!一样</p><p>以前不止一次搭建过wordpress，但最终都宣告失败。原因多种多样，忙碌者有之，兴尽者有之，或者，无墨者亦有之。但终究是不想放弃的。</p><p>过去的几年，学了很多，但都疏于梳理，以至荒废。</p><p>VB C C++ Java C# XHTML+CSS JavaScript PHP ActionScript Ruby Perl</p><p>Photoshop Flash Fireworks Illustrator CorelDRAW AutoCAD 3DsMax Maya</p><p>渐行渐远的内容，以及愈发冗长的行径线路，都充斥着迷惑。当再次回首时忽然有一种冲动，摘录、梳理、铭记，一路走来，挺有趣的。</p><!--kg-card-begin: markdown--><pre><code>/*C*/
#include &lt;stdio.h&</code></pre>]]></description><link>https://swordair.com/wordpress-hello-world/</link><guid isPermaLink="false">59fe0cf19855590d8c9146a9</guid><category><![CDATA[ActionScript3]]></category><category><![CDATA[C]]></category><category><![CDATA[Java]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Perl]]></category><category><![CDATA[PHP]]></category><category><![CDATA[Ruby]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Fri, 15 Jan 2010 01:14:35 GMT</pubDate><content:encoded><![CDATA[<p>第一篇文章总是要有些来龙去脉，就如同第一个程序总是要来个Hello world!一样</p><p>以前不止一次搭建过wordpress，但最终都宣告失败。原因多种多样，忙碌者有之，兴尽者有之，或者，无墨者亦有之。但终究是不想放弃的。</p><p>过去的几年，学了很多，但都疏于梳理，以至荒废。</p><p>VB C C++ Java C# XHTML+CSS JavaScript PHP ActionScript Ruby Perl</p><p>Photoshop Flash Fireworks Illustrator CorelDRAW AutoCAD 3DsMax Maya</p><p>渐行渐远的内容，以及愈发冗长的行径线路，都充斥着迷惑。当再次回首时忽然有一种冲动，摘录、梳理、铭记，一路走来，挺有趣的。</p><!--kg-card-begin: markdown--><pre><code>/*C*/
#include &lt;stdio.h&gt;
int main()
{
	printf(&quot;Hello,world!\n&quot;);
	return 0;
}
```

```
//C++
#include &lt;iostream&gt;
using namespace std;
int main()
{
	cout&lt;&lt;&quot;Hello,world!&quot;&lt;&lt;endl;
	return 0;
}
```

```
//Java
public class Hello{
	public static void main(String args[]) {
		System.out.println(&quot;Hello,world!&quot;);
	}
}
```

```
//C#
using System;
class Hello
{
	public static void Main(){
		Console.WriteLine(&quot;Hello,world!&quot;);
	}
}
```


```
//JavaScript
alert(&quot;Hello,world!&quot;);
```

```
//PHP
&lt;?php
	echo &quot;Hello,world!&quot;;
?&gt;
```

```
//ActionScript
class Hello{
	function Hello():void{
		trace(&quot;Hello,world!&quot;);
	}
}
```

```
#ruby
puts &quot;Hello,world!&quot;;
```

```
#perl
print &quot;Hello,world!&quot;;
```</code></pre>
<!--kg-card-end: markdown--><p><strong>20 December 2013</strong>: 这篇是用wordpress发布的第一篇文章，虽然在2014年我会开始使用Ghost来搭建我的网站和博客，不过还是要怀念一下这4年来的wordpress体验。从这篇文章开始，我陆续要将我迁移的所有文章更新到markdown的格式，虽然传统的<code>html</code>也可以正常在Ghost里工作，不过还是希望做一个完整的迁移。要做的工作还有很多，需要做链接和图片的修补。对于整个网站来说，还有很大部分的静态内容需要一起迁移。我希望能在2014年前完成这些工作，在新年能有一个新的开始。</p>]]></content:encoded></item></channel></rss>