C/C++語言、Java、Python學哪個更好?
關(guān)于編程語言我一直都很贊同的一個觀點:編程語言沒有好壞、優(yōu)劣之分,只有什么語言適合什么樣的應(yīng)用場景,它們都可以在各自擅長的領(lǐng)域發(fā)揮作用和價值。
比如外部開發(fā)用PHP比較合適,java它適合做安卓、大數(shù)據(jù),C和C++它比較適合做底層開發(fā),像游戲引擎、系統(tǒng)軟件之類的,python它比較適合做人工智能,go語言它是區(qū)塊鏈的主力開發(fā)語言,也可以適合做外部后臺等等。
至于自己學什么編程語言比較好就得看你的興趣、想要從事的職業(yè)發(fā)展目標或者項目要求用哪種語言更合適,這就得靠你自己去摸索判斷了,沒必要過多的去糾結(jié)哪門編程語言最好。
問題的重點在于:你學完這個編程語言你想干什么,然后你再決定學什么編程語言。
對于一門技術(shù)的喜厭程度來自很多方面,從個人習慣到項目需求,畢竟任何東西都沒辦法做到人見人愛。
一、JAVA
Java擁有跨平臺、面向?qū)ο?、泛型編程的特性,非常受企業(yè)的喜歡,廣泛應(yīng)用于企業(yè)級Web應(yīng)用開發(fā)和移動應(yīng)用開發(fā)。
Java發(fā)展到現(xiàn)在,按應(yīng)用來分主要分為三大塊:J2SE、J2ME、J2EE。三塊應(yīng)用范圍不同,但卻相互補充。廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。
Java伴隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā) 展,逐漸成為重要的網(wǎng)絡(luò)編程語言。
二、C/C++語言
C語言
C語言是一種通用的命令式編程語言,它起源于19世紀70年代,是大學里面計算機專業(yè)學的第一門編程語言,使用相當廣泛,并且深遠地影響了其后的幾乎每一種語言。
C++最初是作為C語言的增強版出現(xiàn),C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計 語言。C++被用在一些知名軟件中,比如Firefox、 Winamp以及Adobe programs。
目前而言,C語言主要用來開發(fā)底層模塊(比如驅(qū)動、解碼器、算法實現(xiàn)),服務(wù)應(yīng)用(比如web服務(wù)器)和嵌入式應(yīng)用(比如微波爐里的程序)。C++也可以做這些,不過由于C++的復(fù)雜性和標準問題,人們還是更愿意使用C來做。
C++語言
C++更適合比較復(fù)雜但又特別需要高效率的設(shè)施,可以用來開發(fā)系統(tǒng)軟件、應(yīng)用軟件、高性能的服務(wù)器、客戶端應(yīng)用程序以及視頻游戲。
C++對程序員的要求較高,前至各種客戶端,后至網(wǎng)絡(luò)編程,硬件底層。
C++的主要應(yīng)用領(lǐng)域有游戲開發(fā)、嵌入式開發(fā)、桌面開發(fā)、操作系統(tǒng)開發(fā)(要配合C語言)等,這些領(lǐng)域都是對很接近系統(tǒng)底層、對運行效率要求很高。
如果你對游戲開發(fā)很有興趣,那C++是一個優(yōu)秀的入門語言。不過,C++在最初階段對初學者來說可能頗具挑戰(zhàn)性,C++要比C難學一點。
C更適合廣泛應(yīng)用于計算機的底層開發(fā),例如系統(tǒng)軟件:編譯器,JVM,驅(qū)動,操作系統(tǒng)內(nèi)核,還有各種嵌入式軟件,固件等。
C#
語法基于C,啟動時間相當短,只要下載Visual Studio Express,即可全面安裝所有必要的元素,比如SQL Express。C#可以用途很多,從Web開發(fā)到控制臺應(yīng)用程序等等。
全面集成.Net 庫,C#更多的是它背后所依附的.Net平臺,它的許多特性只有在.net中才能發(fā)揮威力。
C#目前更適合于Windows的桌面應(yīng)用開發(fā),在web開發(fā)也有市場。
三、JavaScript
JavaScript是一種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言。聽起來好像和java有些關(guān)系,然而卻不是的,只不過名字像而已。
同時JavaScrip也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能,比如響應(yīng)用戶的各種操作。JavaScript也可以用在游戲開發(fā)等方面。
js最廣泛的應(yīng)用毫無疑問是在web前端。簡單的說,網(wǎng)站給你傳過來的是一堆用各種標簽表示格式的文檔,而js負責操縱這些文檔實現(xiàn)一些客戶端動態(tài)效果。js的領(lǐng)地還不僅如此,現(xiàn)在的Node.js還可以用于服務(wù)器端的開發(fā)。
四、Python
Python是一門易讀、易維護,并且被大量用戶所歡迎的、用途廣泛的語言。由于具有豐富和強大的庫,又被稱為膠水語言,Python 極其容易上手,主要源于Python有極其簡單的說明文檔。
Python?的應(yīng)用領(lǐng)域分為系統(tǒng)編程,用戶圖形接口,Internet?腳本,組件集成,數(shù)據(jù)庫編程,快速原型,數(shù)值計算和科學計算編程,游戲、圖像、人工智能、XML?、機器人編程等等。
常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然后對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴展類庫。Python是做服務(wù)器開發(fā)與物聯(lián)網(wǎng)開發(fā)。
信息安全,大數(shù)據(jù)處理,數(shù)據(jù)可視化機器學習,物聯(lián)網(wǎng)開發(fā),各大軟件的api,桌面應(yīng)用,都需要python。
五、Go
有C基礎(chǔ),學Golang會非常輕松;
語言層面支持并發(fā),這個就是Go最大的特色,天生的支持并發(fā)。服務(wù)器編程用Go來做很合適,例如處理日志、數(shù)據(jù)打包、虛擬機處理、文件系統(tǒng)等,網(wǎng)絡(luò)編程,這一塊目前應(yīng)用最廣,包括Web應(yīng)用、API應(yīng)用、下載應(yīng)用。
一個有動態(tài)語言感覺的靜態(tài)語言,寫起來效率很高,更適合高并發(fā)的網(wǎng)絡(luò)程序和本地程序;
其實編程語言它從邏輯語法上其實都是非常相似的,只要學會了或者精通了一門語言,你再去學別的編程語言上手就會非常快。
比如java、C、C++或者其他編程語言,其實邏輯語法和結(jié)構(gòu)其實都大同小異。
但前提是你要先學會或者精通一門編程語言,在這個基礎(chǔ)上才有可能可能說上手容易;
個人建議直接學C++語言,
百度自動駕駛系統(tǒng)、華為服務(wù)器、騰訊網(wǎng)易的游戲…我敢肯定都用到C++了。
任何一家公司,但凡追求效率的軟件和系統(tǒng),都會采用C++開發(fā),C++的一些優(yōu)越性是其他語言無法比擬的。
只要操作系統(tǒng)還是用C來寫,C就永遠不會被淘汰,這個問題想都不要想。國內(nèi)的C崗位主要是做內(nèi)核相關(guān)的開發(fā),以及一些嵌入式的需求,當然嵌入式的也有用C++的。
C++不會被淘汰的原因之一是C不會被淘汰,因為C++抱緊了C的大腿,C++最基礎(chǔ)的定位就是better C。也有一些領(lǐng)域是C++專屬的,比如說游戲引擎、高頻交易。
業(yè)界很多聲音 : C++ 過于復(fù)雜?
“過于復(fù)雜”指的是加入了冗余的部分,使得本該簡單事情變復(fù)雜了。
然而啊。。。C++的復(fù)雜并不是如你所想。
C++的核心設(shè)計哲學是Zero Overhead。啥意思?說人話就是:你沒有用到的特性,不應(yīng)該給你帶來任何負擔。這個哲學的好處在哪里?當你沒有學到/用到一個知識點的時候,你不需要為它付出代價。
當你不明白左9值右值的時候,單純地傳值就可以玩的很Happy,而當你想要榨取性能,避免拷貝復(fù)制的時候,你才需要和復(fù)雜的左右值,std::move, 標準swap&和對象內(nèi)建swap等聽起來就有點暈的概念搏斗一下。
當你不需要自己設(shè)計內(nèi)存分配機制,就完全不需要理會allocator9這個聽起來就不是很簡單的東西,放心地使用STL內(nèi)置的default部分。但是你在嵌入式環(huán)境下或者近實時操作系統(tǒng)里想要確保內(nèi)存分配的速度和效率,就可以看看怎么重載- -下operator new之類的方法。
當你不需要使用模板工作時,大可以把C++當成一個帶 類的C玩得飛起。不需要為各種偏特化,類型萃取,integral, std::tuple等 高階咒語頭疼不已。但是你需要構(gòu)建一套 需要非常靈活拓展的framework,又不想受限于復(fù)雜的繼承體制時,variadic template和concept就是你最好的朋友。
在你不熟悉FP的時候,完全可以不去考慮lambda表達式,不去考慮std::function,不去寫那些高階函數(shù)。但是當你覺得想把Lisp和Haskel中有些概念比如閉包、monad等搬到C++時,你會覺得其實這些東西蠻順手的。
這多么人性化! C++為不同的能力階段的人提供了不同層次的工具,而且它們幾乎完全正交!但是就是有些人要跳出來“太復(fù)雜啦!我們需要簡單的語言!”
愛因斯坦說過一-句話“科學要簡單,但不是過于簡單?!焙唵蔚氖歉拍詈透拍畹膶哟危瑓s不是概念的數(shù)量和概念本身的復(fù)雜程度。狹義相對論可以把麥克斯維方程組用一個簡單的張量公式表示,卻不能避免張量概念本身的復(fù)雜性。
經(jīng)典力學是不是太復(fù)雜啦,我們需要簡單的!有啊,牛頓力學9。只要你不涉及到速度、質(zhì)量足夠大的場景,就不需要相對論;
流體力學9是不是太復(fù)雜啦?我們需要簡單的!有啊,簡單流體力學。只要你不涉及湍流,就不要考慮數(shù)值求解內(nèi)維爾-斯托克斯方程。
量子力學是不是太復(fù)雜啦?我們需要簡單的!有啊,普通量子力學。只要你不涉及復(fù)雜多體交換關(guān)聯(lián)勢,你就不需要學習高量和重正化群。
C++是不是太復(fù)雜啦?得啦,當你面對的問題還都不涉及到你暫時用不到的內(nèi)容時,C++夠簡單啦。。。
985CS專業(yè)的老學長談下學習C++的一些感受吧。
學習C++的大抵都聽過這句話:
一年精通,三年熟悉五,年了解,十年用過
說說我的體驗吧
本科開始就開始學C++,當然只是皮毛,研究生開始看大量C++書籍,什么c++primer effective系列 modern系列,深度探索C++對象模型等,C++書籍看了不下50本,自以為對C++算很了解了。
于是,開始找工作,第一次參加了某歌在學校的筆試+面試,看了我的簡歷,精通C++?然后問了我一些C++相關(guān)知識,發(fā)現(xiàn)自己連聽都沒聽過,隨便說一個,std::string能否被繼承,為什么?
這個問題看起來很簡單,但是里面涉及大量的知識,比如對STL中string的實現(xiàn)是否了解,以及是否了解內(nèi)存泄漏等等。
然后去了第一家公司做網(wǎng)絡(luò)開發(fā),涉及大量的TCP底層知識以及重構(gòu)Linux下API
第二家公司開始做推薦系統(tǒng)
第三家公司負責廣告引擎
也就是在這家公司,負責的項目,動不動就OOM,造成了千萬損失,能體會到當時什么感覺嗎?使用簡單的排除法之后,發(fā)現(xiàn)問題跟glibc有關(guān),所以在臨時解決問題之后,用了一個月的時間,分析glibc內(nèi)存管理源碼.
說實話,C++我現(xiàn)在已經(jīng)學不動了,新知識越來越多了,hold不住了,哈哈哈
最近網(wǎng)上看到很多人都自詡精通C++,斗膽一說,真不敢說精通,懷著一腔熱血研究C++,掉進去搞了七年。C++ Primer,C++ 程序設(shè)計語言,翻來覆去看了n遍,其他的諸如Thinking in C++,Effective C++,C++ 程序設(shè)計與演進…市面上能買的到的基本都通讀過。最大的一點感受,C++太博大精深了,有多少精力都能耗進去。實際項目開發(fā)中20%都用不到,模板乃至模版元編程,即使你敢寫,也要掂量下你的同事能不能跟上節(jié)奏。
一度懷疑花了那么多精力學習C++是否值得,直到后面有機會專攻Webkit內(nèi)核代碼,里面有些對性能有變態(tài)要求的模塊,諸如JavaScript解析引擎,內(nèi)存池管理,C++的高級玩法都玩到了,C++的優(yōu)勢得得到了充分的展現(xiàn)。在Webkit里面浸淫了兩年,在實際層面理解了C++的價值,她在復(fù)雜性管理和效率之間的有著完美平衡,但是前提是你能駕馭它。
再往后就不寫代碼了,回顧下C++的學習過程與我而言是一門修行,作為一個合格的程序員,深入理解一門語言是必須的,一通百通,后面Java,C#,OC基本上都是一周上手,輕輕松松。但是回顧學習本身,還是值得商闕,
1.語言光看是沒用的,看了不實踐,分分忘光,很多Effective C++提到的問題,只有實際犯錯后才會真正記住,多看,多練。
2.語言只是知識體系里面很小的一部分,其他諸如算法,設(shè)計模式,計算機體系結(jié)構(gòu),編譯系統(tǒng)的理解,同樣重要,缺了就是短板,把讀C++設(shè)計新思維,More Efftive C++的時間拿去讀APUE,敏捷軟件開發(fā)與實踐,收獲會更大。
3. 書先讀厚,再讀薄,看Webkit最大的感受是,里面的C++用得很克制,只是在必須使用時才會用到高階技術(shù),而這種場合無非是一些基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),一些對內(nèi)存和性能有極致要求的地方,否則不光維護難,哪天出問題了,debug多層模版時想死的心都有…。建議看一篇Google寫的C++編碼規(guī)范,如果只是達到這個要求,精讀三四本書就夠了。
4.既然學深了就多去理解他背后的設(shè)計邏輯和哲學體系,為什么引入一些特性,拋棄一些特性,原因是什么??纯碨TL的一些源碼,那是精髓中的精髓,最后試著自己寫一套自己的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法出來,比光看書有效多了。
你可能會問:C++難在哪?
C++之難不在于其語法的復(fù)雜性,也不在于二進制層面上語義的雜亂無章,更不在于玄妙得不食人間煙火的模板推導(dǎo)(模板元編程),這些都只是表象。本質(zhì)上講,C++跟任何語言比,它很獨特很怪異(廢話,任何一種語言那個不特異)。
很多時候,C++給人的感覺就是,好像任何一種語言的特性(這話有點夸張),都可以在C++王國中,通過令人發(fā)指的奇技淫巧,罄竹難書的花樣作死,最后終于可以在一定程度上模擬出來,但是模擬后的結(jié)果,又總是存在這樣那樣的不足,要么因為內(nèi)存管理,要么因為反射的原因,總之,就是好像可以做一切事情,但最后終于做得不好。
這個時候,猿猴要么就直接撲上原生帶有這種特性的語言,要么干脆就完全舍棄,放棄治療,啥技巧也不用,返璞歸真,就老老實實一行代碼一行代碼、不厭其煩、不畏枯燥地一再寫地重復(fù)類似的功能。而C++自身的優(yōu)秀特性(析構(gòu)函數(shù)、內(nèi)存管理、模板、多繼承等等),沒有任何一種語言整的出來,當然,也可以說,這些玩意都是為了解決C++自身制造出來麻煩,other語言s完全不care這些雜碎。難道,這些好東西就沒有一丁點價值了。
這里詳細談下C++ 的學習路線,按照這個路線去學習C++,每個階段都幫你規(guī)劃好了學習時間,只要你努力且認真的去學了, 保證幫你既高效又扎實的學好C++:
【這個知識圖譜總結(jié)基于零聲教育的c/c++Linux服務(wù)器開發(fā)架構(gòu)教程:https://ke.qq.com/course/417774?flowToken=1044433,經(jīng)過數(shù)萬名學員學習的反饋,不斷迭代技術(shù)知識圖譜,貼合市場實際崗位就業(yè)需求,以項目為核心,通過30+的大小項目學習理解c/c++后端開發(fā)技術(shù)。目前已更新至第13版,需要的朋友,可以進Q群:1106675687https://jq.qq.com/?_wv=1027&k=7KRDotz1領(lǐng)取】

1.精進基石
①數(shù)據(jù)結(jié)構(gòu)與算法
紅黑樹(應(yīng)用場景、進程調(diào)度cfs、內(nèi)存管理、左旋與右旋等)
B樹和B+樹(定義證明、插入、刪除、遍歷、查找、指針等)
Hash與BloomFilter,bitmap(函數(shù)實現(xiàn)、應(yīng)用場景、布隆過濾器等)
②設(shè)計模式
創(chuàng)建型設(shè)計模式(單例、策略、觀察者、原型等設(shè)計模式)
結(jié)構(gòu)型設(shè)計模式(適配器、代理、責任鏈、狀態(tài)橋接、組合模式)
③c++新特性
stl容器,智能指針,正則表達式
新特性的線程、進程、原子操作、lamda表達式
④Linux工程管理
Makefile/cmake/configure(工作ipcs原理、文件編譯、cmake的寫法等)
分布式版本控制git(工作流程、分支管理、服務(wù)器搭建等)
Linux系統(tǒng)運行時參數(shù)命令(ipcs、uptime、iostat、sar、mpstat等)
2.高性能網(wǎng)絡(luò)設(shè)計
①異步網(wǎng)絡(luò)庫zvnet
網(wǎng)絡(luò)io與io多路復(fù)用epoll,kqueue(項目)
事件驅(qū)動reactor的原理與實現(xiàn)(項目)
http服務(wù)器的實現(xiàn)(項目)
②網(wǎng)絡(luò)原理
服務(wù)器百萬并發(fā)實現(xiàn)(實操)
redis,memcached,nginx網(wǎng)絡(luò)組件(理論)
posix API與網(wǎng)絡(luò)協(xié)議棧(理論)
UDP的可靠傳輸協(xié)議QUIC(項目)
③協(xié)程框架NtyCo的實現(xiàn)
協(xié)程設(shè)計原理與匯編實現(xiàn)(項目)
協(xié)程調(diào)度器實現(xiàn)與性能測試(項目)
④基于dpdk的用戶態(tài)協(xié)議棧的實現(xiàn)
用戶態(tài)協(xié)議棧設(shè)計實現(xiàn)(項目)
應(yīng)用層posix api的具體實現(xiàn)(項目)
手把手設(shè)計實現(xiàn)epoll(項目)
⑤高性能異步io機制 io_uring
與epoll媲美的io_uring(項目)
io_uring的使用場景(理論)
3.基礎(chǔ)組件設(shè)計
①池式組件
手寫線程池與性能分析(項目)
內(nèi)存池的實現(xiàn)與場景分析(項目)
MySQL連接池的實現(xiàn)(項目)
②高性能組件
原子操作CAS與鎖實現(xiàn)(項目)
無鎖消息隊列實現(xiàn)RingBuffer(項目)
定時器方案紅黑樹,時間輪,最小堆(項目)
手寫死鎖檢測組件(項目)
手寫內(nèi)存泄漏檢測組件(項目)
手把手實現(xiàn)分布式鎖(項目)
③開源組件
異步日志方案log4cpp(項目)
應(yīng)用層協(xié)議設(shè)計ProtoBuf/Thrift(項目)
4.中間件開發(fā)
①redis
redis相關(guān)命令詳解及其原理
redis協(xié)議與異步方式
存儲原理與數(shù)據(jù)模型
主從同步與對象模型
②MySQL
SQL語句,索引,視圖,存儲過程,觸發(fā)器
MySQL索引原理以及SQL優(yōu)化
MySQL事務(wù)原理分析
MySQL緩存策略
③Kafka
Kafka使用場景與設(shè)計原理
Kafka存儲機制
④微服務(wù)之間通信基石gRPC
gRPC的內(nèi)部組件關(guān)聯(lián)
基礎(chǔ)http2的gRPC通信協(xié)議
⑤nginx
nginx反向代理與系統(tǒng)參數(shù)配置conf原理(實操)
nginx過濾器模塊實現(xiàn)(項目)
nginx handler模塊實現(xiàn)(項目)
5.開源框架
①游戲服務(wù)器開發(fā)skynet
sky net設(shè)計原理
sky net網(wǎng)絡(luò)層封裝以及l(fā)ua/c接口編程
sky net重要組件以及手撕游戲項目
②分布式API網(wǎng)關(guān)
高性能web網(wǎng)關(guān) Openresty
Kong動態(tài)負載均衡與服務(wù)發(fā)現(xiàn)
③高性能存儲spdk的文件系統(tǒng)實現(xiàn)(項目)
spdk的工作原理與文件系統(tǒng)架構(gòu)分析
文件系統(tǒng)的posix api實現(xiàn)
文件系統(tǒng)的性能測試
④高性能計算CUDA
gpu并行計算cuda的開發(fā)流程
音視頻編解碼中的并行計算
⑤并行計算與異步網(wǎng)絡(luò)引擎workflow
workflow的應(yīng)用場景
workflow的組件實現(xiàn)
⑥物聯(lián)網(wǎng)通信協(xié)議mqtt的實現(xiàn)框架mosquitto
mqtt的高效使用場景
mqtt的broker
6.云原生
①docker
docker風光下的內(nèi)核功能
docker容器管理與鏡像操作
docker網(wǎng)絡(luò)管理(項目)
docker云與容器編排(項目)
②kubernetes
k8s環(huán)境搭建
pod與service的用法
k8s集群管理(項目)
k8s二次開發(fā)與k8s API(項目)
7.性能分析
①性能與測試工具
測試框架gtest以及內(nèi)存泄漏檢測
性能工具與性能分析
火焰圖的生成原理與構(gòu)建方式
②觀測技術(shù)bpf與ebpf
內(nèi)核bpf的實現(xiàn)原理
bpf對內(nèi)核功能的觀測
③內(nèi)核源碼機制
進程調(diào)度機制
內(nèi)核內(nèi)存管理運行機制
文件系統(tǒng)組件
8.分布式架構(gòu)
①分布式數(shù)據(jù)庫
kv存儲rocksDB的使用場景
TIDB存儲引擎的原理
TIDB集群方案與replication原理
②分布式文件系統(tǒng)
內(nèi)核級支持的分布式存儲Ceph
分布式ceph存儲集群部署
③分布式協(xié)同
注冊服務(wù)中心Etcd
協(xié)同時間 用戶態(tài)文件系統(tǒng) fuse(項目)
快播核心技術(shù)揭秘 P2P框架的實現(xiàn)
四、項目實操
1.dkvstore實現(xiàn)
KV存儲的架構(gòu)設(shè)計
網(wǎng)絡(luò)同步與事務(wù)序列化
KV存儲的性能測試
2.圖床共享云存儲
fastdfs架構(gòu)分析和配置
文件傳輸和接口設(shè)計
產(chǎn)品上云公網(wǎng)發(fā)布/測試用例
3.微服務(wù)即時通訊
IM即時通訊項目框架分析和部署
IM消息服務(wù)器/文件傳輸服務(wù)器
消息服務(wù)器/路由服務(wù)器
數(shù)據(jù)庫代理服務(wù)器設(shè)計
文件服務(wù)器和docker部署
產(chǎn)品上云公網(wǎng)發(fā)布/公網(wǎng)測試上線
項目這一個板塊是由零聲的講師所總結(jié)的,自己在學習的課程中可以結(jié)合上述的詳細技術(shù)細節(jié)點與自己過往工作的項目經(jīng)驗相結(jié)合學習提升。
需要獲取c/c++后端服務(wù)器開發(fā)相關(guān)視頻技術(shù):https://jq.qq.com/?_wv=1027&k=6oU0m6B8