<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mr./Ms. Days (MMDays) - 網路, 資訊, 觀察, 生活MMDays &#8211; 升級</title>
	<atom:link href="http://mmdays.com/tag/%e5%8d%87%e7%b4%9a/feed/" rel="self" type="application/rss+xml" />
	<link>http://mmdays.com</link>
	<description>網路, 產業, 資訊, 觀察, 生活, 電影, 技術, 新知, 科技, 媒體, 趨勢, Web 2.0</description>
	<lastBuildDate>Wed, 08 Feb 2012 17:35:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>版本控制，版本升級是不是個問題？</title>
		<link>http://mmdays.com/2008/01/04/programming-language-version-control/</link>
		<comments>http://mmdays.com/2008/01/04/programming-language-version-control/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 03:17:20 +0000</pubDate>
		<dc:creator>Mr. Saturday</dc:creator>
				<category><![CDATA[Mr. Saturday]]></category>
		<category><![CDATA[專欄]]></category>
		<category><![CDATA[程式設計]]></category>
		<category><![CDATA[觀點]]></category>
		<category><![CDATA[COBOL]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[qing]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[升級]]></category>
		<category><![CDATA[版本控制]]></category>

		<guid isPermaLink="false">http://mmdays.com/2008/01/04/programming-language-version-control/</guid>
		<description><![CDATA[Posted by Mr. Saturday Mr. Friday 的 Java會步上 COBOL 的後塵嗎? 一文還真是引起了相當多的討論，連在 FunP 上面都有一些高手們長篇大論的回應，另外我也看到了 qing 前輩也寫了篇文章 (剛剛也看到他來留言了) 來參與討論，Friday 也針對一些問題跟我私底下聊了一下．正好我自己也有一些淺薄的經驗，這邊就斗膽拿出來跟大家分享一下．不過我先開門見山地表明自己的觀點好了，基本上我覺得拿兩個程式語言來比較好壞，就跟拿英文和中文來比較好壞一樣，意義不大．每種語言有他存在的目的和當初被創造的理由，也各有其優缺點，而且語言會因為使用者而呈現出不同的面貌，真實生活中的語言如此，程式語言自然也不例外． 我比較想要談的，是像 Java 語言版本升級的問題，這也是 qing 前輩著墨甚多的一個問題，底下引述一段： 你沒有必要苦苦追趕Third party程式庫的新版本。通常，在產品開發之前，你就會決定你的技術解決方案，確定你所用的程式庫可以滿足你的需求。在產品開發中途決定更換所用程式庫的major version或到minor version是滿嚴重的事。大多數會需要選定新版的程式庫，多半是發生在選定開發一個新產品的時候。這麼一來，又怎麼會有「程式老跳訊息告訴你這個jar檔版本太舊不是他要的」的問題呢？ 對於版本升級這個問題，我認為這絕對是個對工程師影響重大的事情．這邊我想舉出一個另外的例子和切入點，大家就會知道為什麼版本控制和升級會是個大問題． 大家的討論通常會把程式語言聚焦在產品上面．在單純地開發一個產品這方面，可能就像 qing 所講的，你一開始可以選定技術方案，確定所用的程式庫，中途不要亂更換版本，就不會有什麼問題，不過多數的時候在實際上，世界並沒有這麼美好．程式語言的升級有的時候不只是更改語法或是加入新的 language feature 和 library，很多時候伴隨著升級而來的，是去除舊版本的 bug 和替換舊的 library，甚至於改變某些 function 的行為．這並不是你是否要當一個新版魔人的問題，當你發現舊版本的 bug 可能會引響你的產品，甚至於你原本用的 function 被 deprecated 掉的時候，你必須去考慮升級，確保日後的相容性和穩定性．即使這件事情是發生在你的開發過程中，你也必須花費心力去評估或做修正，這當然是個大問題．不過當然，如果你開發的產品是如此地完美，以致於以後所有的版本更新都不會影響到你，那麼以上我說的對你來說就不成立．但我相信大多數的人不是如此． 以上的討論只放在用程式語言開發一個一個獨立的產品上面，各位是否想過，當一個語言成為你全公司的 infrastructure 的時候，狀況又會是怎麼樣？小弟任職的軟體公司，很不幸地就以 Java 去打造至關重要的 infrastructure．也就是說現在我們公司的工程師不只是用原生的 Java 去開發一個一個的產品而已，Java 這個語言本身已經擴展到全公司，成為很多環境的基礎，包括 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Posted by</strong> <font><strong><a href="http://mmdays.com/category/mr-saturday/"><font color="#964b00" size="large">Mr. Saturday</font></a></strong></font></p>
<p><strong><a href="http://mmdays.com/category/mr-friday/"><strong>Mr. Friday</strong></a></strong> 的 <a href="http://mmdays.com/2008/01/02/java_future/" rel="bookmark" title="Permanent Link to [MMDays 專欄] Java會步上 COBOL 的後塵嗎?">Java會步上 COBOL 的後塵嗎?</a> 一文還真是引起了相當多的討論，連在 FunP 上面都有一些高手們長篇大論的回應，另外我也看到了 <a href="http://www.javaworld.com.tw/roller/qing/entry/%E9%97%9C%E6%96%BC_java%E5%8D%B3%E5%B0%87%E8%AE%8A%E6%88%90%E5%8F%A6%E4%B8%80%E5%80%8Bcobol_%E9%80%99%E7%AF%87%E6%96%87%E7%AB%A0" target="_blank">qing 前輩也寫了篇文章</a> (剛剛也看到他來留言了) 來參與討論，Friday 也針對一些問題跟我私底下聊了一下．正好我自己也有一些淺薄的經驗，這邊就斗膽拿出來跟大家分享一下．不過我先開門見山地表明自己的觀點好了，基本上我覺得拿兩個程式語言來比較好壞，就跟拿英文和中文來比較好壞一樣，意義不大．每種語言有他存在的目的和當初被創造的理由，也各有其優缺點，而且語言會因為使用者而呈現出不同的面貌，真實生活中的語言如此，程式語言自然也不例外．</p>
<p>我比較想要談的，是像 Java 語言版本升級的問題，這也是 qing 前輩著墨甚多的一個問題，底下引述一段：</p>
<blockquote><p><span style="font-family: 新細明體">你沒有必要苦苦追趕</span><span lang="EN-US">Third party</span><span style="font-family: 新細明體">程式庫的新版本。通常，在產品開發之前，你就會決定你的技術解決方案，確定你所用的程式庫可以滿足你的需求。在產品開發中途決定更換所用程式庫的</span><span lang="EN-US">major version</span><span style="font-family: 新細明體">或到</span><span lang="EN-US">minor version</span><span style="font-family: 新細明體">是滿嚴重的事。大多數會需要選定新版的程式庫，多半是發生在選定開發一個新產品的時候。這麼一來，又怎麼會有「程式老跳訊息告訴你這個</span><span lang="EN-US">jar</span><span style="font-family: 新細明體">檔版本太舊不是他要的」的問題呢？</span></p></blockquote>
<p>對於版本升級這個問題，我認為這絕對是個對工程師影響重大的事情．這邊我想舉出一個另外的例子和切入點，大家就會知道為什麼版本控制和升級會是個大問題．</p>
<p><span id="more-5322"></span> 大家的討論通常會把程式語言聚焦在產品上面．在單純地開發一個產品這方面，可能就像 qing 所講的，你一開始可以選定技術方案，確定所用的程式庫，中途不要亂更換版本，就不會有什麼問題，不過多數的時候在實際上，世界並沒有這麼美好．程式語言的升級有的時候不只是更改語法或是加入新的 language feature 和 library，很多時候伴隨著升級而來的，是去除舊版本的 bug 和替換舊的 library，甚至於改變某些 function 的行為．這並不是你是否要當一個<strong>新版魔人</strong>的問題，當你發現舊版本的 bug 可能會引響你的產品，甚至於你原本用的 function 被 deprecated 掉的時候，你必須去考慮升級，確保日後的相容性和穩定性．即使這件事情是發生在你的開發過程中，你也必須花費心力去評估或做修正，這當然是個大問題．不過當然，如果你開發的產品是如此地完美，以致於以後所有的版本更新都不會影響到你，那麼以上我說的對你來說就不成立．但我相信大多數的人不是如此．</p>
<p>以上的討論只放在用程式語言開發一個一個獨立的產品上面，各位是否想過，<strong>當一個語言成為你全公司的 infrastructure 的時候</strong>，狀況又會是怎麼樣？小弟任職的軟體公司，很不幸地就以 Java 去打造至關重要的 infrastructure．也就是說現在我們公司的工程師不只是用原生的 Java 去開發一個一個的產品而已，Java 這個語言本身已經擴展到全公司，成為很多環境的基礎，包括 parallel programming 的 framework 如 MapReduce；Remote Procedure Call 的 framework 等等，都是 based on Java 打造出來．<strong>這種規模和等級已經不是單一產品的問題</strong>，而是牽涉到以後所有還沒出現的產品和既有的產品，和全公司上千甚至上萬名工程師每天如何去寫程式的問題．</p>
<p>也因此，小弟公司內部有一個 team 叫做 Java Infrastructure Team，每次 Java 預定要推出升級的版本時，他們就如臨大敵，工作量暴增，必須立刻評估新版本對於全公司的影響，立刻做出反應，這牽涉到的問題多如牛毛，在管理上：有沒有必要升級是一個問題；什麼時候升級是一個問題；其餘合作廠商是否升級也是一個問題；在技術上：新版本的 performance 是否有差異是一個問題；新版本是否又會帶來新的 bug 是一個問題；對於既有產品的影響又是一個問題；在人員教育上：升級之後的磨合期也是一個問題．請注意，我不是在談單一個人去開發單一產品，我是在說版本升級 (即使是一點點最細微的更動) 如何同時影響到數千個產品，數千位工程師．<strong>在這種規模之下，很不幸地，你必須去苦苦追趕程式語言的升級</strong>．我想這也是為什麼 Mr. Friday 會提出版本升級的問題．</p>
<p>也因此，我認為版本升級，當然是個非常重大的議題．<br/>
<div>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><a href="http://plurktop.mmdays.com/replurkdetail/?link=255c5edf629d7ebb63716140cb0ce1d5" title="看看其他人討論內容" target="_blank"><img src="http://plurktop.mmdays.com/images/replurk_1.png" style="border:0"></a></td>
</tr>
<tr>
<td><a href="http://plurk.com/?qulaifier=shares&#038;status=http%3A%2F%2Fmmdays.com%2F2008%2F01%2F04%2Fprogramming-language-version-control%2F+%28%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%EF%BC%8C%E7%89%88%E6%9C%AC%E5%8D%87%E7%B4%9A%E6%98%AF%E4%B8%8D%E6%98%AF%E5%80%8B%E5%95%8F%E9%A1%8C%EF%BC%9F%29+-+%E8%BD%89%E5%99%97%E6%8E%92%E8%A1%8C%E6%A6%9C+http%3A%2F%2Fplurktop.mmdays.com%2Freplurk" title="推到噗浪" target="_blank"><img style="border:0" src="http://plurktop.mmdays.com/images/replurk_2.png" /></a></td>
</tr>
</table>
</div>
<p><br/><a href="http://www.facebook.com/MMDays" target="_blank">加入MMDays在facebook的粉絲團 隨時閱讀最新文章</a><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://mmdays.com/2008/01/04/programming-language-version-control/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
	</channel>
</rss>

