Dart ์ ํน์ง
๋คํธ์ ์ฒซ์ธ์์ด์ ์ฃผ๋ ํน์ง์ด๋ผ๊ณ ํ๋ค๋ฉด, ๋ฐ๋ก C++ ์ ์ ์ฌํ ํํ๋ผ๋ ์ ์ด๋ค. Dart ๋ฅผ ๋ง๋ ์ฌ๋์ Gilad Bracha๋ผ๋ ์ธ๋ฌผ๋ก, Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ง๋๋๋ฐ ์ฐธ์ฌํ ์ฌ๋์ด๋ค. C++ ์ฌ์ด๊ฒฉ์ธ Java๋ฅผ ๋ง๋๋๋ฐ ์ผ์กฐํ ์ฌ๋์ผ๋ก์จ Dart์๋ ๊ทธ ํน์ง๊ณผ ์์ฑ์ ํฌํจ์ํค์ง ์์์๊น ์ถ๋ค. (ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ด ์ ์ฌํ ๋ฌธ๋ฒ ์ฒด๊ณ์ ๋น์ทํ ์์ฑ์ ๊ฐ๊ณ ๋ง๋ค์ด์ง ๋ฐ๋ ์ด์ ๊ฐ ๋ค ์๋ค..! ์ฐ๊ธฐ ํธํ๊ณ ์ต์ํ๋๊น!)
<main()>
# main() ํจ์.
Dart๋ C++์ ๋ง์ฐฌ๊ฐ์ง๋ก main() ํจ์๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ทธ ์ญํ ์ด ๋์ผํ๋ค. return ๊ฐ์ด ์๋ ์์์ ๊ฐ์ด ์๋ค๋ฉด ํจ์(function)์ void ๊ฐ์ผ๋ก ์ ์ธํด์ฃผ๋ฉฐ ์ ๋ ฅ ํ๋ผ๋ฏธํฐ๋ ๊ทธ๋ ๊ทธ๋ ํ์ํ๋ฉด ์ ๋ ฅํ๋ค.
์ฃผ์ ํน์ง: void, main(), { }, print(), ; ๋ฑ C++ ์ C, python๋ฑ์ ๋ฌธ๋ฒ ๊ตฌ์กฐ๊ฐ ํผํฉ๋ ํํ๋ก ๋ค์ด๊ฐ ์๋ค.
์ฌ๊ธฐ์ ์ ๊น! ๋ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์ ์ฐจ์ด๋?
1. C++์ ์ซ์ํ ๋ฐ์ดํฐ ํ์ ์ C์์ ์ ๋ํ๋ค!
-> C++์ integer ํ์ ์ ๊ฐ์ฒด์งํฅ ํด๋์ค ๊ธฐ๋ฐ์ ๊ฐ์ฒด๊ฐ ์๋, ๋จ์ํ N๊ฐ์ ๋ฐ์ดํธ๋ก ๊ตฌ์ฑ๋ ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ๋ค.
-> Dart๋ ํด๋์ค ๊ธฐ๋ฐ์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ง.. Double , Boolean ํ์ ๋ ๋ง์ฐฌ๊ฐ์ง.
(์ด ์ ์ ๋ python์ด๋ ์ ์ฌํ ๋ฏ..)
2. C++์์ ์ซ์ํ ๋ฐ์ดํฐ ํ์ ์ด ๊ฐ๋ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ CPU์ ์ด์์ฒด์ ๊ฐ ๋ช Bit ์ธ๊ฐ์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ด๋ค.
-> Dart ์ธ์ด์ ๊ฒฝ์ฐ๋ ํ์ฌ 64 bit ์ด์์ผ๋ก ์ง์ํ์ง ์๋๋ก ์ ํ๋์ด ์๋ค.
-> Dart VM(Virtual Machine)์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์ต์ -2์ 63์น์์ ์ต๋ 2์ 63์น ๋นผ๊ธฐ 1์ ๊ฐ์ ๊ฐ๋๋ค.
var ์ dynamics
Dart ์ type inference(์ ์ถ) ๊ธฐ๋ฅ!
integer, double, boolean ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ์์๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์๋๋ผ, var(variable, ๋ณ์) ํ์ ์์ ์ ์ธํ๊ณ , ํ ๋น๊ฐ์ ํตํด ๋ณ์์ type์ ์์ธกํ๋ ๊ฒ.
1) var : ์ค๋ฅธ์ชฝ์ ๊ฐ์ฒด์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ์ผ์ชฝ ๋ณ์์ ์ ์ฅ.
2) dynamic : ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ณ์์ ํ์ ์ ์๊ด์์ด ๊ฐ์ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด? dynamic์ ์ฌ์ฉํด ๋ณ์๋ฅผ ๋ง๋ค๊ณ ๋ค๋ฅธ ํ์ ์ ๋ณ์๊ฐ์ ํ ๋นํ์.
const ์ final
ํ๋ก๊ทธ๋จ์ ์ํ ์ค ๋ณํ์ง ์๋ ์์๊ฐ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ. Dart๋ C++ ์ ์ ์ฌํ๊ฒ const ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ๋ค.
1) const : const ํ์ ์ ๋ณ์๋ compile์์ ๊ฒฐ์ ๋๋ฏ๋ก, ํ๋ก๊ทธ๋จ์ ์คํ ์ค์ ๊ฐ์ ๋ณ๊ฒฝ์ ๋ถ๊ฐ๋ฅ.
2) final : ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด์ ์ต์ด ํ๋ฒ์ ๊ฐ์ ์ ์ฅํ์ง๋ง, ์ดํ๋ก๋ ํด๋น ๊ฐ์ ์์ ๊ฐ์ฒ๋ผ ์ ์งํ๊ณ ์ ํ๋ค๋ฉด final ํ์ ์ ์ฌ์ฉ.
<Built-in Collection types>
# ๋ฐ์ดํฐ ์ ์ฅ ํ์ .
C++์ ๋ฐฐ์ด(array) or STL๊ณผ ์์ํ๋ ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ์ type๋ค.
1) List (์ ์ฅํ ์์ ๊ทธ๋๋ก.. python์ ๋ฆฌ์คํธ๋ c++์ ๋ฐฐ์ด๊ณผ ์ ์ฌ.)
2) Set (์ค๋ณต๊ฐ x)
3) Map
<Conditional Statement>
# ์กฐ๊ฑด๋ฌธ.
Dart์ ์กฐ๊ฑด๋ฌธ(conditional statement)๋ C++๊ณผ ๋์ผํ๋ค.
if ๊ตฌ๋ฌธ, else if ๊ตฌ๋ฌธ, ๊ทธ๋ฆฌ๊ณ else, break, continue ๊ตฌ๋ฌธ์ผ๋ก ์ด๋ฃจ์ด์ง๊ณ , ์ฌ์ฉํ๋ ๊ดํธ๋ ๋์ผ. ์ด์ธ์๋ switch ๊ตฌ๋ฌธ๋ ์ง์ํ๋ฉด์ case-break ๊ตฌ๋ฌธ์ ์ํํ๊ธฐ๋ ํ๋ค.
์ฒซ ๋ฒ์งธ switch : ์ค์ ๋ case ๊ตฌ๋ฌธ ์ค ๋ง์ง๋ง case ๊ตฌ๋ฌธ์ด ์๋ ๊ฒฝ์ฐ์๋ ์์ ์ ํ๋๋ก ํ๊ณ ์๋ค. break ๊ตฌ๋ฌธ์ด C++์๋ ๋ค๋ฅด๊ฒ ์๊ธฐ ๋๋ฌธ์ fall-through๋ฅผ ์ํํ ๊ฒ. C++ ์์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง, Dart์์๋ error๋ฅผ return ํ๋ค.
๋ ๋ฒ์งธ switch : ๋ง์ง๋ง case ์์๋ง ์์ ์ด ์ํ. Dart์ C++์ ํฐ ์ฐจ์ด๊ฐ ์๋ ๊ตฌ๋ฌธ์ด๋ค.
<Loop Statement>
# ๋ฐ๋ณต๋ฌธ.
for, while, do-while, break, continue ๋ฑ์ ๊ตฌ๋ฌธ์ด ์๋ค.
์์)
1) C++์์ ๋ณด์๋ (i = 0; i < 3; i ++) ์ ๊ฐ์ ํํ๋ก ์ ์ฅ๋ ๋ณ์๋ค์ ํ๋์ฉ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
2) python๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก 'in' ๊ตฌ๋ฌธ์ ์ฌ์ฉํด list ์์ ๋ฐ์ดํฐ๋ค์ ํ๋์ฉ ํ๋์ฉ item์ผ๋ก ํ ๋นํ์ฌ ํธ์ถํ๋ ๋ฐฉ์๋ ๊ฐ๋ฅํ๋ค.
<function>
# ํจ์.
1. ์ผ๋ฐ์ ์ธ ํจ์
ํจ์์ ์ด๋ฆ์ด ์๊ณ ๋ด๋ถ ๋ ผ๋ฆฌ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๊ฐ์ ์ ๋ ฅํ๊ณ (์ ๋ ฅ ํ๋ผ๋ฏธํฐ o, x) ๊ทธ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ๋ ํ์.
2. anonymous ํจ์
: ํจ์์ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ. C++ ์ function pointer ์ ์ ์ฌํ๊ฒ ์งง์ ํจ์๋ฅผ ์์๋ก ๋ง๋ค์ด์ ์ ๋ฌํ๋ ๋ชฉ์ .
์ฌ๊ธฐ์ ๋ณ์ func ์ ์ด๋ฆ์ด ์๋ anonymous ํจ์๋ฅผ ๋ ํผ๋ฐ์คํ๋ค. ํจ์๋ช ์ ์์ง๋ง, ์ ๋ ฅ ํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ (i) ๋ฐ๊ฒ ๋์ด ์๋ค. ํจ์๊ฐ ํด์ผ ํ ์์ ์ => ๋ก ํ์ดํ์ ์ค๋ฅธ์ชฝ์ ์์นํ๋ค.
-> ์ ๋ ฅ๋ฐ์ ๊ฐ์ i๋ก ์นํ!
-> ์นํ๋ i ๊ฐ์ func์ด ํธ์ถ๋ ๋๋ง๋ค ํฐ๋ฏธ๋์ ์ถ๋ ฅํ๋ ๋ฐฉ์.
ํจ์์ ์คํ ๋ฐฉ์์ C++ ์ function pointer ์ฒ๋ผ ํด๋น ํจ์๋ฅผ ๋ ํผ๋ฐ์ค ํ๋ ๋ณ์์ธ func ์ ์ด๋ฆ์ ํ์ฉํด ์คํํ๋ค.
To be Continued..
C++ ์ Python์ ์งฌ๋ฝ ๊ฐ๋ฌ๊น... ๋ญ๊ฐ ์๋ก์ฐ๋ฉด์๋ ์ต์ํ ๋๋์ด๋ค. ๋ฌธ๋ฒ์ ์ต๋ํ๋๋ฐ ์์ด ํฐ ์ด๋ ค์์ด ์์๋์ง๋ ์์ผ๋ ํจ์์ anonymous ํธ์ถ ๋ฐฉ์์ด๋ผ๋์ง case ๊ตฌ๋ฌธ์ ์์ธ์ ์ธ ํํ์ ์ข ๋ ์ต์ํด์ ธ์ผ ํ ๋ฏํ๋ค. ์์ง ๊ธฐ์ด ๋ฌธ๋ฒ์ ๋ํ ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ด ๋จ์์์ผ๋, ์ถํ ํฌ์คํ ์ ๊ผญ ํ์ธํ ๊ฒ!
'Dart, Flutter > ๐ณ Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Dart [์ซ์ํ, ๋ฌธ์ํ, Boolean Types] (0) | 2024.01.18 |
---|---|
Dart [๋ณ์ & ์์] (0) | 2023.12.23 |
Dart [Hello World!] (0) | 2023.12.21 |
[Dart vs C++] ver2 (0) | 2023.12.19 |
Dart ์์ํ๊ธฐ [์ค์น ํธ] (2) | 2023.12.18 |