99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)程序員的腦回路進(jìn)程分析

5RJg_mcuworld ? 來源:未知 ? 作者:易水寒 ? 2018-03-29 15:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫在前面:

這篇回答并不是講述在生活中程序員如何買蘋果,而是以買蘋果為例說明程序員如何解決問題。程序員需要對問題進(jìn)行透徹的分析,理清其涉及的所有細(xì)節(jié),預(yù)測可能發(fā)生的所有意外與非意外的情況,列出解決方案的所有步驟,以及對解決方案進(jìn)行盡量全面的測試。

而這些正是我認(rèn)為編程難的地方。任何一點(diǎn)遺漏都會(huì)成為bug,輕則導(dǎo)致挨罵,重則導(dǎo)致經(jīng)濟(jì)損失甚至危害安全。

注意這些難點(diǎn)全部和語言無關(guān)。和編程所需要的絕對嚴(yán)密的邏輯相比,語言實(shí)在是太簡單了。(某些自帶代碼混淆效果的語言除外)

普通人:

我今天要買一斤蘋果。

程序員:

我今天要買一斤蘋果。

  • 因?yàn)槲抑幌矚g紅富士蘋果,所以我只買紅富士蘋果。

  • 我能接受的最高價(jià)格是10元/斤。

  • 正常情況下一斤蘋果用一個(gè)袋子能裝下,但是為防萬一,我會(huì)帶兩個(gè)袋子。

  • 我知道附近的3家水果店,所以我會(huì)依次訪問這3家水果店。

根據(jù)上述條件,我設(shè)計(jì)出以下的買蘋果的流程:

(以下區(qū)域,可以左右拖動(dòng)查看完整內(nèi)容)

買蘋果流程開始 對水果店0、水果店1、水果店2依次執(zhí)行: 拜訪一家水果店流程開始   走到此水果店   如果此水果店沒有開門,則結(jié)束當(dāng)前的“拜訪一家水果店流程”   如果此水果店沒有蘋果,則結(jié)束當(dāng)前的“拜訪一家水果店流程”   如果此水果店的蘋果當(dāng)中沒有紅富士蘋果,則結(jié)束當(dāng)前的“拜訪一家水果店流程”   如果此水果店的紅富士蘋果剩余不到一斤,則結(jié)束當(dāng)前的“拜訪一家水果店流程”   如果此水果店的紅富士蘋果的價(jià)格高于10元/斤,則執(zhí)行3次:   講價(jià)流程開始     詢問店主是否愿意將價(jià)格降到10元/斤或更低     如果店主愿意,則跳過剩余的“講價(jià)流程”   講價(jià)流程結(jié)束   如果此水果店的紅富士蘋果的價(jià)格仍然高于10元/斤,則結(jié)束當(dāng)前的“拜訪一家水果店流程”   打開一個(gè)袋子,將其作為當(dāng)前的袋子   重復(fù)執(zhí)行以下流程,直到總重量大于一斤:   裝袋一個(gè)蘋果流程開始     從所有的不在袋子中的紅富士蘋果中選出最好的一個(gè)     如果此蘋果能裝入當(dāng)前的袋子,則將此蘋果裝入當(dāng)前的袋子,否則執(zhí)行:     換袋子流程開始       如果我有剩余的袋子,則從中任意選出一個(gè)并作為當(dāng)前的袋子,否則執(zhí)行:       向店主要袋子流程開始         向店主索要一個(gè)袋子         如果店主拒絕給我袋子,則將我的所有袋子里的所有蘋果取出,然后結(jié)束當(dāng)前的“拜訪一家水果店流程”         將店主給我的袋子作為當(dāng)前的袋子       向店主要袋子流程結(jié)束     換袋子流程結(jié)束     測量我的所有袋子里的所有蘋果的總重量   裝袋一個(gè)蘋果流程結(jié)束   根據(jù)我的所有袋子里的所有蘋果的總重量和店主給出的價(jià)格,計(jì)算我應(yīng)付的價(jià)格   向店主詢問我應(yīng)付的價(jià)格   如果我不接受店主索要的價(jià)格,則執(zhí)行3次:   校對流程開始     向店主解釋我計(jì)算出的價(jià)格,并詢問其是否同意     如果店主同意,則跳過剩余的“校對流程”   校對流程結(jié)束   如果我仍然不接受店主索要的價(jià)格,則將我的所有袋子里的所有蘋果取出,然后結(jié)束當(dāng)前的“拜訪一家水果店流程”   如果我沒帶錢,則將我的所有袋子里的所有蘋果取出,然后結(jié)束當(dāng)前的“拜訪一家水果店流程”   付錢拿走蘋果   跳過剩余的“拜訪一家水果店流程” 拜訪一家水果店流程結(jié)束買蘋果流程結(jié)束

這個(gè)流程怎么樣?我來設(shè)計(jì)一些測試樣例,測試一下這個(gè)流程。

測試發(fā)現(xiàn)一個(gè)問題:如果水果店0 和水果店1 都有紅富士蘋果并且價(jià)格都低于10元/斤,而且水果店1 的價(jià)格比水果店0 更低,那么我希望買水果店1 的蘋果,但我設(shè)計(jì)的流程會(huì)讓我買水果店0 的蘋果。

為了解決這個(gè)問題,我應(yīng)該先詢問所有水果店的價(jià)格,然后去價(jià)格最低的那一家買蘋果。

經(jīng)過修改,我重新設(shè)計(jì)出以下的買蘋果的流程:

(以下區(qū)域,可以左右拖動(dòng))

買蘋果流程開始 對水果店0、水果店1、水果店2依次執(zhí)行: 詢問一家水果店的紅富士價(jià)格流程開始   走到此水果店   如果此水果店沒有開門,則視此水果店的紅富士價(jià)格為無窮大元/斤,并結(jié)束當(dāng)前的“詢問一家水果店的紅富士價(jià)格流程”   如果此水果店沒有蘋果,則視此水果店的紅富士價(jià)格為無窮大元/斤,并結(jié)束當(dāng)前的“詢問一家水果店的紅富士價(jià)格流程”   如果此水果店的蘋果當(dāng)中沒有紅富士蘋果,則視此水果店的紅富士價(jià)格為無窮大元/斤,并結(jié)束當(dāng)前的“詢問一家水果店的紅富士價(jià)格流程”   如果此水果店的紅富士蘋果剩余不到一斤,則視此水果店的紅富士價(jià)格為無窮大元/斤,并結(jié)束當(dāng)前的“詢問一家水果店的紅富士價(jià)格流程”   向店主詢問此水果店的紅富士蘋果價(jià)格并記錄 詢問一家水果店的紅富士價(jià)格流程結(jié)束 從3家水果店中選出紅富士價(jià)格最低的一家(如果有并列則隨機(jī)選擇),將其作為目標(biāo)水果店 如果目標(biāo)水果店的紅富士蘋果價(jià)格為無窮大元/斤,則結(jié)束當(dāng)前的“買蘋果流程” 走到目標(biāo)水果店 如果此水果店的紅富士蘋果的價(jià)格高于10元/斤,則執(zhí)行3次: 講價(jià)流程開始   詢問店主是否愿意將價(jià)格降到10元/斤或更低   如果店主愿意,則跳過剩余的“講價(jià)流程” 講價(jià)流程結(jié)束 如果此水果店的紅富士蘋果的價(jià)格仍然高于10元/斤,則結(jié)束當(dāng)前的“買蘋果流程” 打開一個(gè)袋子,將其作為當(dāng)前的袋子 重復(fù)執(zhí)行以下流程,直到總重量大于一斤: 裝袋一個(gè)蘋果流程開始   從所有的不在袋子中的紅富士蘋果中選出最好的一個(gè)   如果此蘋果能裝入當(dāng)前的袋子,則將此蘋果裝入當(dāng)前的袋子,否則執(zhí)行:   換袋子流程開始     如果我有剩余的袋子,則從中任意選出一個(gè)并作為當(dāng)前的袋子,否則執(zhí)行:     向店主要袋子流程開始       向店主索要一個(gè)袋子       如果店主拒絕給我袋子,則將我的所有袋子里的所有蘋果取出,然后結(jié)束當(dāng)前的“買蘋果流程”       將店主給我的袋子作為當(dāng)前的袋子     向店主要袋子流程結(jié)束   換袋子流程結(jié)束   測量我的所有袋子里的所有蘋果的總重量 裝袋一個(gè)蘋果流程結(jié)束 根據(jù)我的所有袋子里的所有蘋果的總重量和店主給出的價(jià)格,計(jì)算我應(yīng)付的價(jià)格 向店主詢問我應(yīng)付的價(jià)格 如果我不接受店主索要的價(jià)格,則執(zhí)行3次: 校對流程開始   向店主解釋我計(jì)算出的價(jià)格,并詢問其是否同意   如果店主同意,則跳過剩余的“校對流程” 校對流程結(jié)束 如果我仍然不接受店主索要的價(jià)格,則將我的所有袋子里的所有蘋果取出,然后結(jié)束當(dāng)前的“買蘋果流程” 如果我沒帶錢,則將我的所有袋子里的所有蘋果取出,然后結(jié)束當(dāng)前的“買蘋果流程” 付錢拿走蘋果買蘋果流程結(jié)束

現(xiàn)在這個(gè)流程是不是完美了呢?不是,我還能發(fā)現(xiàn)很多問題。

如果3家水果店都有紅富士蘋果但都不到一斤,但是三家店加起來能達(dá)到一斤,那么我不應(yīng)該結(jié)束流程回家,而是應(yīng)該把三家店的紅富士蘋果都買下來。

如果我向水果店詢問價(jià)格的時(shí)候這家店還有紅富士蘋果,但我詢問完所有水果店的價(jià)格后這家店的紅富士蘋果賣完了,那么我的流程會(huì)讓我試圖處理不存在的紅富士蘋果。

我走路的過程中可能會(huì)遇到突發(fā)事件,比如發(fā)現(xiàn)了新的水果店,比如袋子破掉了蘋果掉一地,對于這些情況我的流程都無法進(jìn)行處理。

啊問題太多了我懶得再改流程了。我還是去X寶買吧。

那么接下來我要設(shè)計(jì)一個(gè)在X寶買紅富士蘋果的流程……


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3689

    瀏覽量

    95233
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    954

    瀏覽量

    30402

原文標(biāo)題:編程到底難在哪里?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對C語言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    Linux系統(tǒng)進(jìn)程管理入門指南

    在 Linux 系統(tǒng)中,進(jìn)程是正在運(yùn)行的程序的實(shí)例。理解進(jìn)程的管理、查看和控制對于系統(tǒng)管理和開發(fā)者來說非常重要
    的頭像 發(fā)表于 04-22 14:34 ?392次閱讀
    Linux系統(tǒng)<b class='flag-5'>進(jìn)程</b>管理入門指南

    進(jìn)程、線程、協(xié)程傻傻分不清?文帶你徹底扒光它們的\"底褲\"!

    消耗 大胃王 中等食量 節(jié)食達(dá)人 面試官看到你會(huì) 直接pass 給個(gè)及格分 大概率拿offer 性格特點(diǎn) 孤僻但靠譜 熱情但容易打架 高效但有點(diǎn)強(qiáng)迫癥 最后送大家張「程序員認(rèn)親圖譜
    發(fā)表于 03-26 09:27

    基于ads1299做一個(gè)電采集設(shè)備的話,電極帽上需要有參考電極嗎?

    基于ads1299做一個(gè)電采集設(shè)備的話,電極帽上需要有參考電極嗎?
    發(fā)表于 01-22 06:44

    阿里云升級(jí)通義靈碼AI程序員,全面上線

    近日,阿里云宣布其備受矚目的通義靈碼AI程序員已正式全面上線,為開發(fā)者帶來更為強(qiáng)大和便捷的編程輔助工具。 此次上線的通義靈碼AI程序員,在功能上實(shí)現(xiàn)了全面升級(jí)?,F(xiàn)在,它支持VS Code
    的頭像 發(fā)表于 01-09 11:16 ?710次閱讀

    TMS320C6000程序員指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000程序員指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-24 17:19 ?0次下載
    TMS320C6000<b class='flag-5'>程序員</b>指南

    TMS320C55x DSP CPU程序員參考補(bǔ)充

    電子發(fā)燒友網(wǎng)站提供《TMS320C55x DSP CPU程序員參考補(bǔ)充.pdf》資料免費(fèi)下載
    發(fā)表于 12-21 11:36 ?3次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補(bǔ)充

    深入解析Linux程序進(jìn)程

    什么是程序 組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令,用于指導(dǎo)計(jì)算機(jī)執(zhí)行特定任務(wù)或解決特定問題。程序通常由代碼、數(shù)據(jù)和資源文件組成,涉及語法、算法和數(shù)據(jù)結(jié)構(gòu)。為二進(jìn)制文件 什么是進(jìn)程
    的頭像 發(fā)表于 12-18 11:01 ?476次閱讀
    深入解析Linux<b class='flag-5'>程序</b>與<b class='flag-5'>進(jìn)程</b>

    UCD3138A64/UCD3138128程序員手冊

    電子發(fā)燒友網(wǎng)站提供《UCD3138A64/UCD3138128程序員手冊.pdf》資料免費(fèi)下載
    發(fā)表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊

    機(jī)械革命發(fā)布CODE AI程序員

    近日,英特爾新質(zhì)生產(chǎn)力技術(shù)生態(tài)大會(huì)在成都舉行,機(jī)械革命作為重要參展商帶來了多款明星產(chǎn)品引爆全場!其中更是在AI PC軟件生態(tài)產(chǎn)品發(fā)布分論壇上,Intel、智譜、機(jī)械革命三方聯(lián)合發(fā)布了專為程序員設(shè)計(jì)的CODE AI程序員本,成為本次大會(huì)的
    的頭像 發(fā)表于 11-30 10:34 ?1102次閱讀

    程序進(jìn)程的區(qū)別

    比如: 開發(fā)寫的代碼我們稱為程序,那么將開發(fā)的代碼運(yùn)行起來。我們稱為進(jìn)程。
    的頭像 發(fā)表于 11-25 16:03 ?1232次閱讀
    <b class='flag-5'>程序</b>和<b class='flag-5'>進(jìn)程</b>的區(qū)別

    Linux驅(qū)動(dòng)程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅(qū)動(dòng)程序程序員指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 15:53 ?0次下載
    Linux驅(qū)動(dòng)<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會(huì)不會(huì)搶程序員飯碗

    AI編程工具可輔助編程,減少手動(dòng)編碼,提升效率,對程序員有積極影響也有挑戰(zhàn)。程序員需深化技能、拓寬知識(shí)應(yīng)對。長遠(yuǎn)看,AI與人類程序員將共生共榮。
    的頭像 發(fā)表于 11-08 10:17 ?527次閱讀

    第五屆長沙·中國1024程序員節(jié)開幕

    據(jù)官方媒體報(bào)道,10月24日;? 第五屆長沙·中國1024程序員節(jié)在湖南湘江新區(qū)開幕;本次中國1024程序員節(jié)以“智能應(yīng)用新生態(tài)”為主題。設(shè)置有岳麓對話、技術(shù)英雄會(huì)、主題峰會(huì)及賽事、展覽等活動(dòng),
    的頭像 發(fā)表于 10-25 15:42 ?494次閱讀

    京東上萬程序員都AI用它!

    對大模型生成代碼進(jìn)行智能修復(fù),為程序員開啟代碼漏洞修復(fù)的“自動(dòng)駕駛”模式,不但減少人工接入、提高工作效率,更為企業(yè)抵御內(nèi)外部各種攻擊構(gòu)建起道堅(jiān)固的安全屏障,確保業(yè)務(wù)的連續(xù)性和穩(wěn)定性。 JoyCoder是京東云自主研發(fā)的款輔助
    的頭像 發(fā)表于 07-17 16:29 ?490次閱讀
    京東上萬<b class='flag-5'>程序員</b>都AI用它!