<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          嵌入式中如何面對(duì)單調(diào)重復(fù)的任務(wù)?

          共 2167字,需瀏覽 5分鐘

           ·

          2022-02-26 13:18

          ????關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容

          作者:jim.li
          來(lái)源:https://blog.csdn.net/absurd/


          我們每個(gè)人都喜歡做有挑戰(zhàn)的,能學(xué)到新東西的任務(wù),而不愿意去那些單調(diào)重復(fù)的,沒(méi)有什么新意的事情。
          然而常常事與愿違,在軟件開(kāi)發(fā)中,前者并非主流,而后者占了大多數(shù)。前者未必每次都能輪到你,而后者也總是要人完成的。
          面對(duì)后者,你可以選擇拒絕接受任務(wù),但那會(huì)讓人覺(jué)得你工作態(tài)度不好,以后好的差事可能就輪流不到你了;你可以選擇走人,換個(gè)地方去做,但那也只能禱告,祈求上帝保佑你在別的地方遇到好任務(wù)。
          其實(shí)這都不是好的做法,相反我們應(yīng)該接受并搞掂它,應(yīng)該想法轉(zhuǎn)換它們,完成任務(wù)但又不必自虐,從中還能學(xué)到東西。下面是我的一些經(jīng)驗(yàn),希望能對(duì)大家有所幫助。

          1、讓電腦去做單調(diào)重復(fù)的工作

          Unix文化有一個(gè)原則:寧愿花機(jī)器一分,不花程序員一秒。單調(diào)重復(fù)的工作多數(shù)都是有規(guī)律可循的,有規(guī)律可循就可以讓電腦來(lái)做。
          實(shí)例一:在早些年代,那時(shí)還沒(méi)有聽(tīng)說(shuō)autobuild這個(gè)概念,發(fā)布版本是一件痛苦事情。你要從CVS上取出源代碼,編譯各個(gè)版本((英文版, 日文版) x(大企業(yè)版, 小企業(yè)版, 試用版)),再制定各個(gè)版本的安裝包,最后上傳到FTP服務(wù)器上。
          如果整個(gè)過(guò)程順利,四個(gè)小時(shí)差不多了,但事實(shí)是從來(lái)沒(méi)有順利過(guò),結(jié)果通常要花費(fèi)兩三天才能完成。編譯出錯(cuò),手工拷貝文件出錯(cuò),上傳時(shí)放錯(cuò)目錄如此等等。那位負(fù)責(zé)做版本的大姐還算有耐心,堅(jiān)持做了大半年時(shí)間,后來(lái)這事沒(méi)費(fèi)多大勁就推到我頭上了(呵,大家都認(rèn)為我好欺負(fù))。
          我接手后,第一件事是花了兩天用bash寫(xiě)了個(gè)腳本,把整個(gè)過(guò)程自動(dòng)化了,在接下來(lái)一個(gè)版本中進(jìn)行了驗(yàn)證,并修正幾個(gè)腳本里的問(wèn)題,后來(lái)發(fā)布版本時(shí)幾乎不用人干預(yù)了。
          實(shí)例二:如果有人問(wèn)我寫(xiě)得最多的程序是什么。我一定會(huì)回答是代碼產(chǎn)生器,前前后后、大大小小至少寫(xiě)過(guò)十幾個(gè)代碼產(chǎn)生器,小的可能是用bash+awk來(lái)做的,也就上百行代碼,大的用C/C++來(lái)寫(xiě),動(dòng)則數(shù)千行代碼,最大的竟達(dá)8000多行C++代碼。
          大部分代碼產(chǎn)生器都為我節(jié)省了不少時(shí)間,或者至少把單調(diào)重復(fù)的事情變得有趣一點(diǎn)了,而且得到的代碼也更穩(wěn)定可靠。

          2、換種思路,看有沒(méi)有捷徑

          有些事情單調(diào)重復(fù),本來(lái)也是可以讓電腦去做的,但是開(kāi)發(fā)相應(yīng)的工具要費(fèi)更多的時(shí)間,得不償失,這時(shí)不換一種思路,或許別有洞天。
          實(shí)例一:曾接到一個(gè)任務(wù),要求找出一個(gè)公共函數(shù)庫(kù)里的所有全局變量。那個(gè)庫(kù)是個(gè)大雜燴,里面什么東西都有,凌亂而龐大。時(shí)間期限是一周,時(shí)間比較充足,即使一個(gè)文件一個(gè)文件的去找,時(shí)間也來(lái)得及,但那太痛苦了。
          更麻煩的是這個(gè)庫(kù)是變化的,可能剛剛完成任務(wù),又有人加了一個(gè)全局變量,這樣就很難拿到一個(gè)最新的結(jié)果。怎么呢,我想,編譯器肯定是知道哪些是全局變量的,所以第一反應(yīng)是拿一個(gè)開(kāi)源的編譯器修改一下,讓編譯器告訴我結(jié)果。
          修改編譯器可能也要一周時(shí)間,但利用它隨時(shí)可以得到最新結(jié)果。有沒(méi)有更簡(jiǎn)便的辦法呢?猜想VC輸出的map文件或許有些幫助,打開(kāi)map文件一看,果然如此。讓VC編譯該庫(kù)并輸出map文件,取出全局變量列表,搞掂了。從接受任務(wù)到完成任務(wù)前后不到一個(gè)小時(shí)。
          實(shí)例二:前幾天,同事拿一個(gè)第三方庫(kù),編譯時(shí)發(fā)現(xiàn)那個(gè)庫(kù)是用帶硬件浮點(diǎn)數(shù)的toolchain編譯,而我們的toolchain用的是軟浮點(diǎn)數(shù)。盡管反匯編出來(lái),沒(méi)有發(fā)現(xiàn)浮點(diǎn)指令,但編譯器就是不讓鏈接該庫(kù)。我們的方案是,反匯編它再重新編譯它。
          但反匯編出來(lái)的格式與as的輸入格式有些差異,要花不少時(shí)間去修改,修改之后發(fā)現(xiàn)還是編譯不過(guò)去。最后,這個(gè)任務(wù)又落到我頭上了。
          我想既然沒(méi)有用浮點(diǎn)指令,編譯器不讓編譯可能是因?yàn)橐粋€(gè)標(biāo)志引起的,于是花了點(diǎn)時(shí)間去研究ELF(linux下的可執(zhí)行文件格式)文件格式。果然是文件頭中一個(gè)標(biāo)志引起的,寫(xiě)了個(gè)小程序?yàn)樵搸?kù)加上這個(gè)標(biāo)志位,編譯就通過(guò)了。

          3、換種心情,坦然接受

          如果面對(duì)一項(xiàng)任務(wù),你別無(wú)選擇時(shí),那就坦然接受它吧。然后想辦法說(shuō)服自己,讓自己有個(gè)好的心情,這樣的任務(wù)總是要有人做才行。還可以告訴自己,一定要從中學(xué)到點(diǎn)東西,即使從中學(xué)不到技術(shù),也要從中學(xué)會(huì)忍耐。
          當(dāng)我從QA組進(jìn)入RD組時(shí),我任務(wù)是把Win32程序移植到linux下。這個(gè)任務(wù)比較重要,但絕不是什么好任務(wù),工作本身單調(diào)不說(shuō),別人還瞧不起。他們認(rèn)為這都是很簡(jiǎn)單的,是不用動(dòng)腦子的體力活。
          同組的同事很多都走了,新來(lái)的同事也呆不了多久。但我堅(jiān)持下去了,移植的同時(shí)去研究那些代碼,去研究Win32和linux在編程上的差異, 一年之后我成了少數(shù)幾個(gè)了解整個(gè)系統(tǒng)架構(gòu)的人,編程能力大有提高,對(duì)軟件的可移植性也有了較深的理解。

          版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。

          ???????????????? ?END ????????????????

          關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。

          關(guān)注程序員編程基地,回復(fù)“pdf”獲取程序員必讀經(jīng)典書(shū)單,一起編程一起進(jìn)階。



          點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。

          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香婷婷深情五月亚洲 | 91re视频 | 亚洲做爱视频 | 成人一二三 | 亚洲人午夜射精精品日韩 |