如何評價開學季知乎上大量出現C/C++新手問作業題?

相關問題:

為什麼知乎上的高手們,總是要因為知乎新秀不熟悉知乎的功能,而吐槽他們在問題里貼的代碼都不縮進呢? - 生活

問題所述現象舉例:

C語言作業編譯不通過,錯誤在哪裡? - C(編程語言)

在C語音中在函數中再次調用此函數要如何讓實現? - C(編程語言)

c++的一個編程問題 請問有誰知道? - C++

(待補充)


這是好事啊,至少自己想了一下,沒有直接抄同學了。


有問題就問,挺好的。不過有兩個建議:一個是先百度/Google後知乎;第二個是你要是有某一個具體問題問可以,別出現『XXX這題怎麼做啊』這種求答案的問題。


連我這種c++新手都可以去裝逼了


邀請我我也只會給VC點贊啊


第一節 引述

[Stack Overflow 最流行的編程語言和標籤](http://www.codeceo.com/article/stack-overflow-tags.html)(為方便理解 補充Stack Overflow的相關百科)

Stack Overflow是一個程式設計領域的問答網站,隸屬Stack Exchange Network。網站允許註冊用戶提出或回答問題,還可對已有問題或答案加分、扣分或進行修改,條件是用戶達到一定的「聲望值」。「聲望值」就是用戶進行網站互動時能獲取的分數,例如,用戶A回答了一個問題,用戶B對用戶A的解答給予了「加分」,用戶A就會因而獲得10點聲望值。當聲望值達到某個程度,用戶的權限就會增加,如聲望值超過50點就可以評論答案,另外網站也會根據用戶的貢獻頒發徽章

。用戶建立的內容都使用知識共享協議授權。

https://zh.wikipedia.org/wiki/Stack_Overflow

引用 Stack Overflow 引只是為了從提問數量說明相關語言的成熟度或者難以解決的問題比例

  1. 1.6% 的 C 相關問題足以說明 C 經歷40多年的使用,大部分問題都有相關解釋和解決方法

  2. 3.4% 的 Cpp 從答主自己檢索情況看,多為各種第三方庫的使用問題

在此引用 Linus Torvalds (Linux之父)對 Cpp 的炮轟,並不為說明 「 C 語言是最好的語言」,只是藉此解釋 Cpp 的庫問題所佔比例之大這一情況

C++ is a horrible language. It"s made more horrible by the fact that a lot

of substandard programmers use it, to the point where it"s much much

easier to generate total and utter crap with it. Quite frankly, even if

the choice of C were to do *nothing* but keep the C++ programmers out,

that in itself would be a huge reason to use C.

In other words: the choice of C is the only sane choice. I know Miles

Bader jokingly said "to piss you off", but it"s actually true. I"ve come

to the conclusion that any programmer that would prefer the project to be

in C++ over C is likely a programmer that I really *would* prefer to piss

off, so that he doesn"t come and screw up any project I"m involved with.

C++ leads to really really bad design choices. You invariably start using

the "nice" library features of the language like STL and Boost and other

total and utter crap, that may "help" you program, but causes:

- infinite amounts of pain when they don"t work (and anybody who tells me

that STL and especially Boost are stable and portable is just so full

of BS that it"s not even funny)

- inefficient abstracted programming models where two years down the road

you notice that some abstraction wasn"t very efficient, but now all

your code depends on all the nice object models around it, and you

cannot fix it without rewriting your app.

(略)

Gmane Loom

不為說明 「 C 語言是最好的語言」,只是藉此解釋 Cpp 的庫問題所佔比例之大這一情況

中文翻譯

C++是一種糟糕的(horrible)語言。而且因為有大量不夠標準的程序員在使用而使情況更糟,以至於極容易產生徹頭徹尾的垃圾(total and utter crap)。老實說,選擇C就是為了把C++程序員踢出去。……我有這樣的結論,任何喜歡用C++而不是C開發項目的程序員可能都是我希望踢出去的人,免得他們來搞亂我參與的項目。C++會導致非常非常糟糕的設計選擇。你們這些C++程序員總是一上來就用語言的那些『漂亮的』庫特性比如STL、Boost和其他徹頭徹尾的垃圾,這可能對你們的程序有所『幫助』,但是卻會導致:

—當庫無法工作時無窮無盡的折磨(別跟我說什麼STL尤其是Boost很穩定而且可移植性很好,那全是屁話,而且一點都不可笑)

—低效的抽象編程模型,可能在兩年之後你會注意到有些抽象效果不怎麼樣,但是所有代碼已經依賴於圍繞它設計的『漂亮』對象模型了,如果不重寫應用程序,就無法改正。

不為說明 「 C 語言是最好的語言」,只是藉此解釋 Cpp 的庫問題所佔比例之大這一情況

(重要的話說三遍)

第二節 常見解決方法

以下開始闡述常見問題解決方法

  1. 查文檔!查環境!看Demo!
  2. 查文檔!查環境!看Demo!
  3. 查文檔!查環境!看Demo!(入門問題多數解決 Linux 賽高!!)
  4. 百度(記住部分公司對使用百度解決編程問題極度厭惡,實際上百度在中文化娛樂向的搜索上還是很強大的)
  5. Google(大部分問題都能得到解決,無法解決請參看 節 搜索技巧 ,無法訪問自行解決)
  6. 相關語言的官方或中文維護社區 (列表見 第四節 QA站點及專項社區
  7. 萬不得已 知乎

第三節 搜索技巧

舉題主的一排例子

第一個例子:

#include&
#include&

float lv(float r,float n)

int main(void)
{
float r,n;
r=0.09;
n=10;
printf("%f",lv(r,n));
return 0;
}

float lv(float r,float n)
{
float z,s,p;
z=1+r/4;
s=pow(z,n);
p=1000*s;
return p;
}

運行結果:

:~$ gcc t1.c
t.c: In function 『lv』:
t.c:7:1: error: expected 『=』, 『,』, 『;』, 『asm』 or 『__attribute__』 before 『{』 token
{
^
t.c:16:1: error: expected 『=』, 『,』, 『;』, 『asm』 or 『__attribute__』 before 『{』 token
{
^
t.c:22:1: error: expected 『{』 at end of input
}
^

:~$ g++ t1.c
t.c:6:1: error: expected initializer before 『int』
int main(void)
^

  1. 截取輸出去除差異信息
  2. 儘可能簡短的搜索關鍵句

合適的搜索方式

error: expected 『=』, 『,』, 『;』, 『asm』 or 『__attribute__』 before 『{』 token

error: expected 『=』, 『,』, 『;』, 『asm』 or 『__attribute__』 before

error: expected initializer before 『int』

第二個例子

#include&
using namespace std;

int add(int x,int y)
{
z = x + y;
return(z);
}
int main()
{
int a, b;
c = add(a, b);
cout &<&< "a+b=" &<&< c &<&< endl; system("pause"); return 0; }

運行結果:

:~$ gcc t.c
t.c:1:19: fatal error: iostream: 沒有那個文件或目錄
#include&
^
compilation terminated.

:~$ g++ t.c
t.c: In function 『int add(int, int)』:
t.c:7:5: error: 『z』 was not declared in this scope
z = x + y;
^
t.c: In function 『int main()』:
t.c:13:5: error: 『c』 was not declared in this scope
c = add(a, b);
^
t.c:15:19: error: 『system』 was not declared in this scope
system("pause");
^

合適的搜索方式

#include& compilation terminated.
(這是個沒明白gcc和g++差異的小白me,以前的錯誤)

error: was not declared in this scope

QA站點及專項社區

  1. Stack Overflow
  2. github
  3. google groups

  4. csdn

  5. segmentfault

  6. iteye
  7. dewen
  8. 待補充

節 自行分析問題

暫且把問題分2大類

  1. 演算法
  2. 應用

演算法問題!!沒見過不知道 值問題 一定是寫錯誤 自查

應用問題

  1. 查看官方文檔(一個函數一個函數的查用法,環境,參數等)

  2. 分析目的 找demo
  3. 無法分析目的或未找到相關結果 關鍵函數 上github找大型項目的代碼段
  4. 查看環境 Makefile 和編譯器問題(編譯官方demo有無問題)
  5. 搜索提問

第六節 提問方式和語法

  1. 輸出 + 源代碼 + 編譯參數 + 環境
  2. 其他參見各問答社區和論壇規範和支持情況

(答案純屬答主臨時編寫,並不代表廣大程序猿習慣)

補充鏈接:萬能的知乎(下):當「水化」危機不可避免,拯救知乎的一千種可能

答主以普通高中生閱歷和日常習慣討論,經供參考,以及歡迎補充,勿噴......(匿~~


我的原則是這樣的,新人有問題,不管多傻逼,答還是要答的,要言簡意賅,別粘一篇高深的技術博客或者一句RTFM就走人,而且不能往偏處帶,比如明明寫C的你給安利Cpp


然後傻逼問題該噴的還得噴,這個不能沒有


我是來給輪子哥點贊的...

其實我覺得可以起收費找人做嘛.50一個題...肯定很賺...


你們呀你們,總想從輪子哥那搞個大新聞!


挺好的。

1為拉低知乎水準做出了不可估量的貢獻;

2為某些半吊子裝逼提供了機會。


不是該直接無視么?


表示其中有一個問題就是我問的

0.0

其實一開始也不想麻煩大家的,畢竟這種初級的問題來問知乎的大神們也不好。不過,也不是單純的直接到知乎上來問,我事先是先查詢了書本,然後百度,發現根本沒有這個問題的解答,接著自己開始琢磨,打出一段代碼後來發現不行,有錯誤,最後,知乎是我唯一的求助地方了。然後就問了這些低級問題。

為什麼不去問百度知道呢?百度知道我之前問了三個問題只有一個問題被人回答過............

上邊第二個問題就是我問的

0.0

謝謝各位對新手問題的回答


很多新手連翻牆都不會翻,你讓人家怎麼google


這個現象反映出的就是上半年看了輪子哥等人忽悠的高三學生們最後都變成了預備程序員。


CS大一,看到這個問題是因為幾個月前的一個問題剛被標註伸手黨。

-----------------

題主問這是為什麼,我可以理智氣壯地說因為不會嗎?不不不我不敢,因為後面人就會噴不會你不知道自己查啊。

好吧讓我簡單地說一下。

查資料越查越多不懂的東西,別告訴我那就一直查下去,您老逗我玩呢么,拿看不懂的詞去解釋我們看不懂的詞,然後我們去查,最後死循環了呵呵噠。當然,我也反感那種遇到個問題自己都沒好好想也沒查資料就跑知乎問的新人。自己能解決就靠自己是對的。另外,基本上同學們都是新手都也不會,你讓我找會的同學問,哪些人會,剛開學誰能知道?

話不多說,有人非要鄙視新手無話可說,就是不知道您老當年怎麼走過來的。


深夜寫代碼,過來回答一下這個問題。

至少會用知乎問,這可是好事。

你要知道,那些真的不願意動腦子的人,是直接抄代碼的。

如果你用過新浪微博的API,你就會發現很多相關文件作者是Yusuke Yamamoto。我當時稍微一查就發現這是個推特的程序員。

這也解決我的一個疑問:新浪微博究竟是抄哪個的?

看來還是推特,不過連作者名字都沒改,也是不要臉的厲害。

現在並不好找了,因為叫這個名字的日本男演員太多了,還有幾個有很多粉絲,我一查就頭大,哪個同學有興趣找找吧。

還有我當時上C++課的時候,有一個佔總評價10%的編程作業,我印象中記得是linked list相關的。當時我還比較笨,不過還是用4天內零零散散的時間寫,在deadline前一天寫完了,結果deadline之前3個小時的時候,一個同學A在微信群上問:可不可以借這個作業的代碼參考一下?

我當時的第一反應是這同學應該是想對答案吧?畢竟這貨非常帥,一眼看上去根本不像個工科生,反而像是一個未來的CEO,又是某個協會的主席,做事好像也很負責的樣子。但還是去問了另一個同學B,那個同學罵我傻逼,這典型是要抄作業啊,於是勸我不給,後來我想了想還是沒給。

有個待人和善的同學C沒怎麼想就直接把代碼發給他了。

於是一個禮拜後,這兩個人被TA警告抄襲,A,C同學作業零分, 學校的政策是抄襲兩次被發現,直接退學。如果兩個人答案相似,不管是提供者還是被提供者,都一起記過。如果你不是故意給某人抄的,可以去申述。

這同學A後來隨便道歉一句,就好像這件事沒有發生過一樣,若無其事的繼續當他的現充了。

想想看,至少知道來知乎問,比那些連抄作業都不會抄,直接copy and paste的人好多了吧?連linked list都不會寫,這同學後來居然也好意思轉到計算機專業 。

不過這同學人緣也是好,居然一大堆人給他洗地,說他那時候忙著社團的事,實在沒時間才這樣做的,「你們就不能老糾纏這個事情,諒解他一下嗎?!」理院商院的同學都有給他洗地的,結果搞得為此憤憤不平的人,倒像是低情商那個。

我那同學C一方面嫌麻煩,一方面不想和A翻臉,當時也沒有去向TA申述。

這真的把我噁心到了。


項莊舞劍,意在沛公


我以前就看看,不說話,但慢慢地發現自己已經能解答好多問題了,所以,這挺好


先思考,再搜索,搜索不到或者不懂再來問,別做伸手黨。


推薦閱讀:

為什麼有些人罵 C++,如 Linux 之父對 C++ 進行了炮轟,說它是糟糕程序員的垃圾語言?
C++中if(x==8)和if(8==x)有什麼區別?
有什麼像a=a+b;b=a-b;a=a-b;這樣的演算法或者知識?
程序中的變數名總是起的很長怎麼辦?英文單詞的縮寫有規律么?
如果重新設計C#你最希望增加什麼特性,去掉什麼特性,改變什麼語法?

TAG:編程 | C編程語言 | C | 伸手黨 |