-
1 # 洪晉科技
-
2 # 古天樂100
重申一遍,C#沒有毛病,但.NET框架卻有問題,ASP.NET依賴.NET框架、IIS、WINDOWS SERVER,這才是核心問題,雖然.NET CORE框架能解決這個問題,但出現時間太短,.NET CORE 2.0出現才兩年時間,而且還在完善當中,真心不敢使用啊
-
3 # TurboCh
c#在國外其實很受歡迎的,在國內由於這些大廠阿里百度騰訊主流用的是java,以至於國內受歡迎程度、普及率還有薪資水平並不高。也就是這些原因造成了生態嚴重失衡!一旦公司發展壯大就極有可能轉java。c#這門語言是真優雅!linq以及語法糖實在是太棒了!net5對原生也有很好的支援!也支援開源!也支援跨平臺!對非同步操作也有質的最佳化!java的jdk到1.8就開始收費了!net core一直免費開源!所以未來net還是很有發展前途的!但是面向國內薪資程式設計的話還是先研究java程式設計吧!
-
4 # Eclipse70003419
c#確實是錢問題。論效率,net框架認第二,那些什麼垃圾宇宙第一語言,世界最大社群什麼的都要靠邊。無奈國內開發者氛圍浮躁,人云亦云。網上說什麼語言好就一窩蜂去搞,前段時間火nodejs,然後又說Python,跟著又說PHP,今天又來什麼go。具備踏實運用一門技術。的開發者太少。做專案。就直接的不思考了。人家說什麼設計模式什麼框架就直接套了。完全都不思考和進行可行性研究,沒得抄,沒得套,直接說什麼生態不行來掩蓋自己創造能力,實現能力的不足。只能說,聰明人用net core。其他人嘛,隨他喜歡。
-
5 # 紅色大帝001
在國外之前幹了6年.net。基本上這邊比較傳統的企業或者banking 金融這樣的公司用.net比較多。我33了,不打算繼續做微軟的這套了。現在轉做scala大資料。其實語言沒有好壞,就是使用場景和生態不一樣而已。想做什麼看當地就業生態環境結合自身條件
回覆列表
一門語言有沒有前途,很重要的一點就是這個語言效能怎麼樣,我一直認為c#的效能還是不錯的,但是,試驗結果,卻很意外!
在認真回答這個問題之前,我一直以為C#這個語言效能要比java好。之前從事過6年多的asp.net開發。
為了回答這個提問,我親自編寫了一下三種語言同樣的浮點運算函式的程式碼,對比三種語言的效能:c++,c#,java.讓事實說話。
我以為c++排第一,c#排第二,java排第三。但是結果卻讓我大跌眼鏡架。
java效能居然奪冠,c#跟c效能差不多稍弱一點點。這個結果太另我驚呀了。
當然,我是從技術這方面出發,提問者更關心的其實是自己學哪種語言前途更好,決定前途的,我認為不是語言本身,而是人本身。不過,有一個打臉的事實,java程式設計師工資,確實普遍比.net程式設計師工資高。做為一個.net程式設計師,這是個讓人悲傷的訊息。
附三種語言的程式碼,親測可以直接編譯執行,有興趣可以自行執行對比結果。注意各語言對時間的單位不一樣,有的用的毫秒,有的用的微秒,由於獲取時間都存在誤差,對比幾毫秒的差距意義不大,看看誰先跑完就行了。我將運算次數定為5億次計算。如果時間差不明顯可以增大計算時,比如加到50億次計算,就可以看到更明顯的差距。
c++程式碼:
#include <iostream>
#include<time.h>
void start()
{
clock_t start_t, end_t;
double total_t;
for (int j = 0; j < 5; j++)
{
start_t = clock();
double c = 100000.123;
double b = 200000.021;
double ef = 300000.321;
for (int i = 0; i < 500000000; i++) { ef = c * b + ef / c - b; }
end_t = clock();
total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
std::printf("第%d次執行,耗時:%f\n",j,total_t); } }
int main(){
std:printf("test\n"); start(); return(0);
}
c#程式碼:
using System;
namespace csharp{
class Program {
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Program test=new Program();
long f1 = DateTime.Now.Ticks;
System.Console.WriteLine(f1);
test.strat(); long f2 = DateTime.Now.Ticks;
System.Console.WriteLine(f2-f1); }
public void strat() { for (int j = 0; j < 5; j++) { long f = DateTime.Now.Ticks;
double c = 100000.123;
double b = 200000.021; double ef = 300000.321; for (int i = 0; i < 500000000; i++) {
ef = c * b + ef / c - b; } long g = DateTime.Now.Ticks; long kl = (g - f)/1000; System.Console.WriteLine("第"+j.ToString()+"次執行,耗時:"+kl.ToString()+";");
} }
}}
java程式碼:
import java.util.Date;
public class JTest {
public void strat()
{
for (int j = 0; j < 5; j++)
{ long f = new Date().getTime(); double c = 100000.123; double b = 200000.021; double ef = 300000.321; for (int i = 0; i < 500000000; i++) { ef = c * b + ef / c - b; } long g = new Date().getTime(); long kl = g - f; System.out.println("第"+j+"次執行,耗時:"+kl+";"); } }
public static void main(String args[]){ System.out.println("Hello World!");
JTest test=new JTest();
long f1 = new Date().getTime();
System.out.println(f1); test.strat();
long f2 = new Date().getTime();
System.out.println(f2-f1); }
}