※ 本文轉寄自 ptt.cc, 文章原始頁面
看板C_Chat
標題

Re: [閒聊] 結論是C#比Java厲害嗎

最新2023-12-22 00:58:00
留言103則留言,39人參與討論
推噓41 ( 42160 )
※ 引述《arrenwu (最是清楚哇她咩)》之銘言: : 而如果追求更方便、同時短短幾行就能引出很大效果的程式語言, : 那從Python入門也行。這個對程式麻瓜最友善 : 缺點就是使用者對於電腦處理整數、小數點、字串的方式, : 以及記憶體管理會很沒有概念。 : 有人可能覺得這些計概會教,我個人覺得是... : 這些東西只有摸了才會知道在幹嘛,讀過計概就只有「反正底下就是01010101」 : : 推 phoenix286: 就算不清楚電腦處理資料型態及記憶體管理的方式 12/20 08:33 : → phoenix286: 這對使用者會有什麼影響嗎? 12/20 08:33 整數簡單,會出現問題通常是浮點數 ------ Pytthon 3.9.7 ------ >> x = 0.1 + 0.2 >> x - 0.3 == 0.0 False 表面上看起來是 "0.1 + 0.2 - 0.3 不等於 0.0"的怪事, 但實際上是你打進一個浮點數,實際上程式存進去的數值跟人想的不一樣。 這必須要知道電腦怎麼處理資料 另外關於記憶體管理的部分,我講記憶體管理可能容易造成誤解, 我想描述的是在 C 裡面 malloc 或 new 算子在記憶體裡面創造物件的機制 最終是要了解 pass by reference 和 pass by value 的差異。 C/C++ 會強迫使用者要理解這差異 但是Java以上隱藏了pointer的存在後,這部分就比較模糊 這差異的重要性在於... x = 3; y = x; # 複製x到y y = 9; # 現在設定y的數值為9 x -> 3 y -> 9 非常直覺的結果 但換成 numpy 的矩陣: import numpy as np A = np.array([[1,2],[3,4]]) B = A # 複製A到B B[0,0] = 9 # 改動B的第一個entry為9 B -> [9,2] [3,4] A -> [9,2] <---- 你只有改B,但A也被改動了 [3,4] 要理解這個情況,使用者無論如何都要理解pointer的概念 啊對了,矩陣那個例子,在MATLAB不成立 MATLAB 矩陣的等號算子是 deepcopy 嘻嘻 不過記憶體管理也確實該要了解啦 因為有時候你一個不小心還是會在Python造成memory leak。 如果沒有記憶體管理概念的話,你連你的程式可能造成memory leak都不知道 -- 角卷綿芽Line貼圖上市囉~ 24種可愛貼圖,只要30元! https://pbs.twimg.com/media/FTwzC2AUYAAF5AY.jpg 購買連結:https://t.co/lNGU5jN7b2 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 98.45.195.96 (美國) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1703038911.A.7A1.html

103 則留言

SangoGO, 1F
只好出動邏輯大師javascript了

smart0eddie, 2F
js不好嗎
說來慚愧 javascript雖然夯到爆 但我沒用過

Ericz7000, 3F
大大都用什麼
個人娛樂用Anaconda Python

JustBecauseU, 4F
js 1=='1' 嘻嘻

msbdhdfceb, 5F
C#有decimal可以用,不會出現0.3那個例子的問題,如

msbdhdfceb, 6F
可你很在意十進位精度時可使用(金融計算時尤其重要

madrac, 7F
我覺得浮點數是另個單獨的問題啦

ccpz, 8F
js 0=="0", 0==[] 都是 true, 但是 "0"==[] 會是 false
==

madrac, 9F
我通常都是教人沒必要的話就全部用整數記資料

s7503228, 10F
js爛死了幹
但是js超爆幹夯耶

ccpz, 11F
NaN==NaN 也是 false

madrac, 12F
真的要寫需要大量數值方法的程式就是開 Matlab 了
用Python也可以啦

devilkool, 13F
我還看過全部用字串記的= =

SangoGO, 14F
因為js是用在前台的,戰場不同

usoko, 15F
js真的是邏輯大師 py算什麼

usoko, 16F
不過這年頭IDE都會跳warning告訴你memory leak

s7503228, 17F
我也常用所以知道問題 不過還好現在我只搞後端 前端不用

s7503228, 18F
弄了 基本上可以跳過 JS只適合搞一些簡單的東西 再多都

s7503228, 19F
要套件去弄

msbdhdfceb, 20F
動態型別語言都會有很多魔法 JS只是裡面巫力特別高的
Python 的函數,變數可以不用宣告型別。 這點有時候會搞得debug滿痛苦的

rabbithouse, 21F
傳址跟傳值搞得懂的話 C++用起來會有人機一體的感覺

rabbithouse, 22F
很舒服
我...嗯...只覺得C++的macro能搞得error log很難懂而已 倒是從來沒有人機一體的感覺
※ 編輯: arrenwu (98.45.195.96 美國), 12/20/2023 10:41:48

s7503228, 23F
現在寧願值都在後端處理完在丟到前端做簡單處理就好 JS

s7503228, 24F
本身能不用就不用==

SangoGO, 25F
越方便就越不清楚...,畢竟是js,一個var包山包海

usoko, 26F
以算力來說 複雜的事情本來就該在後端做完

Re: [閒聊] 結論是C#比Java厲害嗎

usoko, 28F
這年頭type safe對軟體開發很重要 py其實不能亂寫

usoko, 29F
經典js meme

madrac, 30F
我這邊 C++ 趨勢都是沒在寫 macro 了, 太難維護

zyxx, 31F
只有var是幾年前的事了 現在有let const

Issarc0721, 32F
js真的是很多奇葩的玩法可以搞人XD

bpk, 33F
js在瀏覽器按F12就可以用console測一些指令

thelittleone, 34F
這個不是基本之一嗎?不管學Python Java都會遇到

thelittleone, 35F
寫JavaScript 就自求多福,自己不搞不表示同事不搞

ccaao311, 36F
補另個點,R跟matlab一樣不會改動到前者的array

inte629l, 37F
python記得有參照機制吧

mikuyoyo, 38F
值本來就是越後面處理越好吧,js 用途就是網頁框架都用

mikuyoyo, 39F
他,又沒人在用別的語言

b0920075, 99F
為什麼要出不同語言?這問題就像明明就有菜刀為什麼要

b0920075, 100F
弄柴刀、鐮刀、生魚片刀、開山刀一樣

zxc8787, 101F
Python也有decimal, 你第一個例子根本不是Python獨有的

zxc8787, 102F
問題

micbrimac, 103F
C++跟C誰比較強?