技術分析下!美社安爛賬有人出來洗地_風聞
大眼联盟-47分钟前
昨天遇到個不懂但自信的人,忍不住寫了DEI是個什麼東西。其實呢,很多人都知道DEI是啥玩意,途徑有三: 親身慘痛經歷 工作需要,必須瞭解DEI,接受了正規培訓 出於興趣,上網搜索 有第三條途徑,就説明了DEI也不是啥高深內容,普通人能自己搞明白的。但今天想説下社安爛賬,是因為有專家出來洗地,還有很多半懂的人説些似乎有理的辯解,感覺要是不來個專業分析,還真能讓他們把水攪渾了。
馬斯克爆料:社安系統內存在大量壽星,第一名高壽360多!然後有IT專家洗地:美國IT專家大衞·吉爾伯特表示,這背後的真相其實很簡單,就是早期使用的COBOL編程語言帶來的誤會。他舉出一個例子:在馬斯克貼出的統計中,150歲這個年齡段的老人異常多,這恰好説明這個bug可能出自計算機系統的缺陷,而非人為造假,否則的話,造假者完全可以把數據做得更加“平滑”。大衞·吉爾伯特解釋説,在COBOL語言中沒有日期這個數據類型,因此只能用字符來佔據位置。當遇到出生日期不完整、資料缺失的時候,系統可能自動使用一些基準數據來填充空格,最常用的就是1875年(“米制公約”簽署的年份)。到了2025年,系統中這部分出生日期顯示為1875年的人,剛好顯示年齡為150歲。*然後還來了威脅:*科技網站Fast Company擔心的是,馬斯克手下的年輕團隊顯然沒有聽説過COBOL這種早期的編程語言,如果他們貿然決定修改代碼,後果可能不堪設想。“COBOL語言其實很脆弱,每做一處改動都需要經過大量的安全測試才行。如果這些年輕工程師們隨便在後台修改代碼的話,有可能某一筆救命的醫療補助就無法按時發到位。”*本來這地洗的一點都不好,馬斯克明明爆料壽星高達360多歲,你光解釋個150歲就行了?結果我發現還真有人信,連那個威脅都有人信。只能説專家出馬,還是挺能唬人的*。
一條一條批吧。 1. *在馬斯克貼出的統計中,150歲這個年齡段的老人異常多,這恰好説明這個bug可能出自計算機系統的缺陷,而非人為造假,否則的話,造假者完全可以把數據做得更加“平滑”。*這種話騙誰呢?拜登曲線知道嗎?造假水平取決於誰造假。要是讓數據專家造假,是可以做的很好,但當初造假的人確定是專家?或者説確定不是DEI上去的專家?
2. 在COBOL語言中沒有日期這個數據類型,因此只能用字符來佔據位置。
早期的語言都沒有日期這個數據類型。為什麼?因為不必要。現在的編程越來越傻瓜化,編程語言提供了很多數據類型以及相關操作,寫程序很容易。當年我們作業算一人以天計算的年齡,都是讀取整數類型的出生年月日,然後自己寫程序考慮各月多少天,還有閏年效應,算出來的。只有傻逼才會用字符類型來保存****年月日。
3. 當遇到出生日期不完整、資料缺失的時候,系統可能自動使用一些基準數據來填充空格,最常用的就是1875年(“米制公約”簽署的年份)。
一個很基本的要求是程序必須能處理異常數據,包括數據缺失。
數據缺失是可以用基準數據來填充,但有兩要求: 基準數據不能出現在正常數據裏。比如用1875年填充缺失的年份,那就要確保沒有人是1875年生的。這裏不僅僅包括活人,還有存檔的死人數據。
按這標準,1875不是個好的基準數據。為什麼不用-1?程序以後可能由其他人維護,用-1,一看就知道是基準數據。
處理數據時首先要判斷是不是基準數據,如果是,必須有特殊代碼處理。比如讀到1875年出生,必須輸出歲數未知,而不能傻傻的算出個歲數。
所以使用****基準數據不應該造成錯誤,除非程序員傻逼。
4. 馬斯克手下的年輕團隊顯然沒有聽説過COBOL這種早期的編程語言,如果他們貿然決定修改代碼,後果可能不堪設想。
馬斯克手下的年輕團隊是可能沒聽説過COBOL,但誰改代碼時發現語言不會,還敢改的?印度程序員?
這句話還有個隱藏錯誤,修改錯誤數據需要改代碼?數據和代碼混成一團,那除非是最最底層的機器語言,彙編語言都不會這樣。還有人説數據改了,代碼必須改,才能正常工作。他大概以為這是千年蟲這種問題?千年蟲的問題不光是數據,是代碼本來就有錯,讀年默認只有兩位,然後在前面加19,結果到了2000年就出錯了。如果代碼本身沒有問題,只是數據有錯,比如人工輸入把生年1975敲成了1875,那麼只要改數據就行了。
我的結論是,社安數據有問題,而且不是小問題。分配社保編號的人比總人口還多6000萬。2023年美國人口3.349億,按這個算就是多出約18%。2000萬人的年齡超過100歲,這要是人為敲錯,就是輸入錯誤約6%?這樣的員工還不開除?
有人説這只是數據錯誤,這些壽星也未必就領錢了,否則馬斯克怎麼不爆料?沒看新聞嗎?為了不讓馬斯克看領錢的數據,社安局長寧願提前退休!這些人説不定還真領錢了,錢到哪就得查了。
jolly11