بهانه هایی برای گریز از کامنت گذاری

کامنت گذاری در کد، یک شمشیر دو لبه است. اگر به درستی انجام شود، می تواند طراحی سیستم را بهتر کند و در غیر این صورت، بسیار آسیب زننده است.

کامنت گذاری در واقع مستندسازی کد است. ولی بسیاری از برنامه نویس ها معتقدند که کامنت فقط باعث اتلاف وقت می شود. حتی کسانی که هم معتقدند کامنت گذاری مفید است، خیلی کم این کار را انجام می دهند. به همین دلیل، در اکثر سازمان ها، بخش های بسیاری از کد بدون کامنت است.

معمولا برنامه نویس ها 4 بهانه برای ننوشتن کامنت دارند:

  1. کد خوب نیازی به مستندسازی ندارد
  2. برای کامنت گذاری زمان ندارم
  3. کامنت ها بعد از گذشت زمان، منقضی شده و باعث اشتباه می شوند
  4. همه ی کامنت هایی که من دیده ام بی فایده بوده اند

این بهانه ها را بررسی کنیم:

1. کد خوب نیاز به مستندسازی ندارد

بعضی افراد باور دارند که اگر کد خوب نوشته شود، به کامنت گذاری نیازی نیست. قطعا همه ی ما دوست داریم این جمله را باور کنیم، ولی در نهایت، اشتباه است. البته قطعا کارهایی هست که می توان انجام داد تا نیاز به کامنت گذاری کمتر شود. مثلا این که برای متغیرها اسم مناسب انتخاب کنیم. ولی باز هم اطلاعات زیادی وجود دارد، که آن ها را نمی توان در کد نشان داد.

برای مثال، در یک کلاس، فقط بخش کوچکی از واسط آن، مثل signature متدها را می توان در کد مشخص کرد. ولی این که هر متد دقیقا چه کاری انجام می دهد، یا معنی خروجی آن چیست، تنها از طریق کامنت گذاری قابل انتقال به خواننده ی کد است. چیزهای دیگری هم هست که در کد قابل توضیح دادن نیست، مثلا این که چرا یک طراحیِ به خصوص برای بخشی از کد انتخاب شده و یا چرا یک متدِ بخصوص صدا زده شده است.

بعضی برنامه نویس ها معتقدند که برای دانستن این که یک متد چه کاری انجام می دهد، باید کد آن را خواند نه این که از طریق کامنت متوجه آن شد. ولی آیا این کار عقلانی است؟ آیا باعث اتلاف وقت نمی شود؟ شاید در یک نرم افزار کوچک این کار امکان پذیر باشد، ولی در سیستم های بزرگ، خواندن کدِ متد برای فهمیدن رفتار آن، روش کاربردی نیست.

علاوه بر این، کامنت ها برای انتزاع، ضروری هستند. همانطور که در مطلب برنامه نویسی ماژولار اشاره شد، هدف از انتزاع، پنهان کردن پیچیدگی است. انتزاع، یک نمای ساده شده از یک موجودیت است، که اطلاعات ضروری (برای آن انتزاع) را حفظ می کند، و هر اطلاعات اضافه ای را دور می ریزد. اگر برای استفاده از یک قطعه کد، افراد مجبور باشند کد آن را بخوانند، پس انتزاعی وجود ندارد و همه ی پیچیدگی آن قطعه از کد، در معرض دنیای بیرون قرار گرفته است. در مورد متدها، اگر یک متد کامنت نداشته باشد، تمام انتزاع آن، شامل نام متد و نوع پارامتر های ورودی و خروجی آن است.

برای مثال فرض کنید یک متد داریم، که یک بخش از یک string را استخراج می کند. این متد دو ورودی دارد، start و end که مشخص کننده ی شروع و پایان ِ قسمتی از string هستند که باید جدا شود. قطعا از ظاهر این متد، نمی توان تشخیص داد که آیا string خروجی، شامل کاراکترهایی که در start و end هستند هم می شود؟ یا فقط هر آنچه بین این دو عدد است را جدا می کند؟ برای فهمیدن این سوال، استفاده کننده، باید کد را بخواند تا بتواند از این متد استفاده کند.

بنابراین اگر می خواهید از انتزاع استفاده کنید تا پیچیدگی را پنهان کنید، با استفاده از کامنت بهتر می توانید این کار را انجام دهید.

2. برای کامنت گذاری زمان ندارم

معمولا برنامه نویس ها، اولویت کامنت گذاری را پایین تر از انجام سایر وظایف در نظر می گیرند. بین این که یک بخش جدید را توسعه دهند، یا این که برای کدی که قبلا نوشته اند کامنت بنویسند، معمولا اولی را انتخاب می کنند. همه می دانیم که پروژه های نرم افزاری، تقریبا همیشه از نظر زمانی تحت فشار هستند و در اکثر مواقع، کارهای زیادی هست که اولویت آن ها از کامنت گذاری بالاتر به نظر می رسد.

ولی باید از دیدگاه سرمایه گذاری به این مساله نگاه کرد. اگر یک نرم افزار با ساختار تمیزتر می خواهید، که در بلندمدت، عملکردِ شما را بهتر می کند و سرعت توسعه را بیشتر، باید در کوتاه مدت، زمانی را به ساختن این ساختار تمیز اختصاص دهید. کامنت های خوب، کمک بسیاری به نگهداری یک سیستم نرم افزاری می کنند و زمانی که برای کامنت گذاری صرف می شود، در آینده سود ده خواهد بود.

علاوه بر این، کامنت گذاری قرار نیست زمانِ زیادی از شما بگیرد. در نظر بگیرید که شما برای تایپ کردن کد چقدر زمان می گذارید و مقایسه کنید با زمانِ تخصیص داده شده به تحلیل، طراحی، کامپایل کردن کد و تست آن. احتمالا این زمان بیشتر از 10 درصد نخواهد بود. تایپ کردن کامنت هم دقیقا همینطور است. نهایتا باید 10 درصد از زمان را به آن اختصاص داد، و این مستند سازی، اگر به درستی انجام شود، این هزینه را به خوبی جبران خواهد کرد.

3. کامنت ها بعد از گذشت زمان، منقضی و باعث اشتباه می شوند

درست است. بعضی کامنت ها ممکن است در طول زمان اعتبار خود را از دست بدهند. ولی دقت کنید زمانی کامنت بی اعتبار می شود، که تغییرات گسترده در کد اعمال شده باشد و اعمال این تغییرات، قطعا زمان خیلی بیشتری از تغییر کامنت ها از شما خواهد گرفت. اگر کامنت ها، از نظر جایگاه در کد، نزدیک کدی باشند که به آن مربوط است، می توان در زمان تغییر کد، به سادگی و با صرف زمان کم، کامنت را هم تغییر داد و از منقضی شدن آن جلوگیری کرد.

4. همه ی کامنت هایی که من دیده ام بی فایده و زحمت اضافه بوده اند

قطعا هر مهندس نرم افزار، در طول دوره ی کاری خود، کامنت هایی را دیده است که هیچ اطلاعات مفیدی در خود نداشته اند و هیچ کمکی به مستندسازی نرم افزار نکرده اند.

ولی این دلیلی برای حذف کامنت گذاری از روال توسعه ی نرم افزار نیست. وقتی افراد یاد بگیرند چگونه کامنت بنویسند و یک چهارچوب کلی برای این کار داشته باشند، این مشکل حل خواهد شد. مساله این است که افراد برای نوشتن کامنت نیاز به آموزش دارند و این کاری نیست که صرفا با سلیقه ی شخصی و بدون داشتن چهارچوب و روش های مشخص انجام شود.


مزایای نوشتن کامنت

در مطلب پیچیدگی در نرم افزار گفته شد که پیچیدگی، به سه صورت خودش را در سیستم نشان می دهد:

  • تشدید تغییر (change amplification)

یعنی برای یک تغییر کوچک، بخش های زیادی از سیستم را باید تغییر داد.

  • بارِ شناختی (cognitive load)

یعنی برای اعمال یک تغییر، برنامه نویس باید اطلاعات وسیعی از بخش های مختلف سیستم به دست آورد.

  • ندانسته های ناشناخته (unknown unknowns)

یعنی این که چه بخش هایی باید تغییر کنند، یا برای اعمال تغییرات، چه ملاحظاتی باید در نظر گرفته شود، مشخص و شفاف نیست.

کامنت گذاری خوب، می تواند در دو مورد آخر کمک کند. هم می تواند بار شناختی را کم کند. چرا که اطلاعاتی که برنامه نویس برای تغییر بخش هایی از کد باید داشته باشد، به سرعت به او می دهد و چون نیازی به خواندن کد نیست، از هجوم اطلاعات اضافه به ذهن برنامه نویس جلوگیری می شود. همچنین میزان ناشناخته ها کمتر می شود و به راحتی می توان تاثیرِ تغییرات را پیش بینی کرد و آن بخش هایی که به کد فعلی مرتبط است را شناسایی کرد. علت اصلی پیچیدگی در نرم افزار، وابستگی ها هستند و با کامنت گذاری می توان این وابستگی ها را شفاف کرد و ابهام را کاهش داد.


خلاصه

ایده ی کلی کامنت گذاری، نمایش اطلاعاتی است، که در هنگام طراحیِ یک بخش از کد، در ذهن طراح و برنامه نویس بوده است، ولی امکان نشان دادن آن در کد نیست. این اطلاعات شامل جزئیات سطح پایین مانند محدودیت های سخت افزاری که افراد را وادار به یک طراحی خاص می کند، تا جزئیات سطح بالاتر، مثل علت وجودی یک کلاس یا یک ماژول خاص می شود.

وقتی یک برنامه نویسِ دیگر، بعد از گذشت زمان، می خواهد آن ماژول را تغییر دهد، با خواندن کامنت ها، کار خود را بسیار سریعتر انجام می دهد. ولی بدون کامنت، باید آن چه که در ذهن برنامه نویس قبلی بوده را حدس بزند. این اتفاق هم باعث اتلاف وقت می شود، هم این که با حدسِ اشتباه، ممکن است برنامه نویس جدید، کدی بنویسد که منجر به خطا شود.

حتی اگر قرار است همیشه! همان برنامه نویس قبلی روی یک بخش از کد کار کند، باز هم کامنت گذاری لازم است. کافی است فقط چند هفته از زمانی که یک کد را نوشته اید بگذرد، تا جزئیات طراحی و پیاده سازی آن بخش از کد را فراموش کنید.


منبع

A philosophy of software design

نوشته بهانه هایی برای گریز از کامنت گذاری اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

برنامه نویس، انسان منزوی یا اجتماعی؟!

توی اکثر فیلم هایی که حداقل یک سکانسش مربوط به یه برنامه نویس بوده( حتی اگه از جلو دوربین رد شده) یا توی باور اکثریت مردم برنامه نویس یه کاراکتره که :

هودی کلاه دار می پوشه (حتی تو آفتاب تابستون)، یه شخصیت مرموز و منزوی داره، جامعه گریزه، تنها دوستش کامپیوترشه، دائم داره با سرعت نور با کیبورد کار میکنه و ….

اما آیا واقعا برنامه نویس ها اینطور شخصیتی دارند؟

خب طبیعتا جواب هم آره هست هم نه!

چون یک قسمتی از این مسئله بر میگرده به روحیه و ذات آدمها که مطمئنا اون آدم اگر دکتر هم میشد همون شخصیت رو داشت.

ولی باور عمومی که این فیلم ها در ذهن مردم به جود آوردند به نظر من کاملا غلط هست.

حتی کسانی که مخصوصا در سنین پایین شروع به برنامه نویسی میکنند تحت تاثیر این فیلم ها سعی میکنند همچین شخصیتی داشته باشند که قطعا خیلی دووم نمیارن!

برای مطمئن شدن از این مسئله کافیه یه نگاه به برنامه نویسای اطرافتون بندازین (اول ازشون بپرسید که برنامه نویس هستن یا فقط جو برنامه نویسی دارند!)

برنامه نویس ها کسانی هستند که حداقل بخاطر تخصصشون باید توی جوامع بزرگ و کوچکی عضو باشند، با دیگران ارتباط بگیرند تا یاد بگیرند! باید برای رفع باگ هاشون سوال بپرسن یا به سوالات جواب بدن.

این افراد غالبا توی انجمن های زیادی (حضوری یا آنلاین) عضو هستند، دائما در حال برگزار کردن یا شرکت کردن توی اجتماعاتی هستند که پر از آدمهای مختلف هست.

برنامه نویس ها با مشتری، رئیس،همکار و … دائما در ارتباط هستند(مگه اینکه نیازی به نون شب نداشته باشند)

اکثر برنامه نویس های واقعی! پارتنر دارند، دوستانی دارند، همکار دارند، مهمونی میرن، مسافرت میرن(با رعایت پروتکل های بهداشتی) و …

پس بنظرم وقتشه یه مقدار این باوری که در عموم جامعه راجع به برنامه نویس ها وجود داره رو تغییر بدیم!

برنامه نویس ها خوشحال هستند، اجتماعی هستند،با موس هم کار میکنند! ، با کامپیوترشون وارد رابطه عاطفی نمیشن! ،مناسب فصل لباس می پوشن! و کارهای که بقیه می کنند رو انجام میدن…

نظر شما راجع به این قضیه چیه؟

برنامه نویس باشید و ازش لذت ببرید 🙂

نوشته برنامه نویس، انسان منزوی یا اجتماعی؟! اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

کامپایل کردن پایتون ۳.۱۰ از سورس کد

این روزها واقعا حالت جالبی برام داره سه‌تا از زبون‌های مورد علاقه‌ام یا تازه ورژن جدید شون رلیز شده یا به زودی رلیز میشن و هر کدومشون یا تغییرات نسبتا بزرگی دادن یا قراره توی ورژنی که میاد تغییرات جالبی ایجاد کنند

زبان GO قرار اول فوریه آینده ورژن ۱.۱۸ رو بده و توش جنریک‌ها رو اضافه کنه، C# هم توی ورژن ۱۰ ش قراره ویژگی‌های جالب جدیدی از async رو اضافه کنه مثل async method builder

چند روز پیش‌ هم پایتون ۳.۱۰ منتشر شده، که متاسفانه یا خوشبختانه اوبونتو هنوز حتی ورژن ۳.۹ رو دیفالت توی پکیج‌های خودش نذاشته.

بخاطر همین تصمیم گرفتم هم سوس کد پایتون رو برای خودم کامپایل کنم هم اینکه به این بهانه یکم درباره سورس کد زبان پایتون اینجا بنویسم

پیش نوشت:

من خوشم میاد از این کارا، نشستم دستی کامپایلش کردم شما میتونید بدون دردسر از apt و یا ویندوز اینستالر استفاده کنید

با apt:

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt install python3.10

حالا بریم سراغ کامپایل کردنش:

مواد لازم برای این کار مسلما داشتن gcc و make و دسترسی به ترمیناله که من خودم از WSL2 ویندوز استفاده میکنم

خب بریم سر اصل مطلب، اول اینو بگم که پایتون ایمپلمنتیشن‌های مختلفی داره مثل pypy و IronPython.net و هر کدوم، سورس کد پایتون رو تغییرات اساسی دادن که باعث زیاد شدن سرعت اجرا و یا کامپتیبل شدنش با مایکروسافت Common runtime language یا چیزای دیگه می‌شه و خب کامپایل کردنشون داستانی کاملا جداست.

حالا ما میخوایم CPython که ایمپلمنتیشن اصلی پایتونه رو یه نگاهی بش بندازیم

اول دایرکتوری‌ که میخوایم توش کارامون رو بکنیم بسازیم

mkdir python_source && cd python_source

لیست دیپندنسی‌ها و لایبرری‌های مورد نیاز پایتون رو نصب میکنیم:

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

که تقریبا همشون لایبرری‌های نسبتا معروفی هستن مثل sqlite3, build-essential, libssl, و بقیه

فایل سورس کد هم که روی سایت پایتون هست و کلا ۲۴ مگه

wget  https://www.python.org/ftp/python/3.10.0/Python-3.10.0b4.tgz

با tar بازش میکنیم و میریم ببینیم چیا توشه؟

tar -xf Python-3.10.0b4.tgz
cd Python-3.10.0
ls 

فایل config خیلی چیز جالبه و کار رو به شدددددت راحت میکنه،‌ و میاد برای شما محتویات makefile.pre رو بسته به سیستم شما عوض میکنه. دیگه حتی نیازی نیست داکیومنت‌ها رو بخونیم یا سورس کد رو تو گیت‌هاب زیر و رو کنیم. هر چند این فایل خودکار تولید شده و حدود ۲۰هزار خطه، اما بخش‌هاش کاملا مشخصند و اگه یکم bash script بلد باشید و قبلا پروژه‌های متن باز رو کامپایل کرده باشید راحت می‌تونید چیزایی که می‌خواید رو پیدا کنید. میدونیم که عموما این پروژه‌های متن باز توی فایل کانفیگشون، به بخش optimization دارن که makefile یا makefile.pre رو برای سیستم شما عوض میکنه

حالا که دستور مد نظر رو پیدا کردیم اجراش میکنیم

./configure --enable-optimizations

لیست بلند بالایی از متغییرهای مختلف خواهید دید که بر مبنای سیستم شما، تنظیم میشن. و یه چند ثانیه شایدم چند دقیقه کوتاه طول میکشه یه چیزی مثل تصویر پایین

تموم که شد وقت make کردن میشه، که احتمالا برای WSL باید خود پکیجش رو نصب کنید

sudo apt install make -y

کامند make یه flag داره به اسم -j یا jobs که میتونید بگید چندتا از پروسسور‌ها رو استفاده کنه که خب من برای اینکه کارم سریع‌تر راه بیوفته میزنم رو ۸ تا. شما میتونی بگی پردازنده های بیشتری رو استفاده کنه یا کمتر

make -j 8

خود make میره makefile رو بر اساس Makefile.pre تولید میکنه براتون. وقتی میک فایل رو باز می‌کنید اولش یه همچین کامنتی میبینید که کامندهای بدرد بخور رو براتون نوشته

کامندهای make test , make install اصلی‌ها هستن ولی نوشته make altinstall پایتون جدید رو با قبلیه جایگزین نمی‌کنه ولی make install اینکارو میکنه به همین دلیل من اینجا altinstall میکنم

 make altinstall

معمولا برای اینکه ببینید نرم افزار درست کامپایل شده یا نه باید یه بار ترمینال رو ببندید دوباره باز کنید

برای چک کردن اینکه نصب تموم شده یا نه

python3.10 --version 


حالا که کامپایل تموم شده بیاید یه نگاهی به خود سورس کد پایتون بندازیم

توی دایرکتوری‌ای که حاصل فایل فشرده بود چندتا دایرکتوری دیگه هست که بعضیاش رو میخوام توصیه کنم حتما نگاه کنید واقعا آموزنده هستش و اینو به آدم میفهمونه که وقتی خیلی راحت خفن ترین کارهای دنیای برنامه نویسی رو با ۴ خط کد انجام میدیم، توی اون زیرزمین تنگ و تاریکی کدها که هیچ کس نمی‌خواد ببینتش چقدز نبوغ مهندسی خرج شده.

دایرکتوری Lib تمام لایبرری‌های استاندارد رو شامل میشه که شدیدا توصیه میکنم حداقل لایبرری‌های http, crypt, asyncio,ssl رو بخونید و ببینید چقدر نبوغ مهندسی برای پایتون خرج شده

دایرکتوری Python هم شامل سورس کد لایبرری‌های هسته پایتونه که واقعا کدهای جالبی توش هست

من هنوز تو مدیریت خطاها بعضی وقت‌ها شیش میزنم فایل errors.c خیلی برام باحال بود

دایرکتوری Objects هم سورس آبجکت‌های built-in پایتون به زبان C هستن و انقدر دقیق و کامل کامت گذاری شدن که انگار دارید کتاب میخونید نه کد.

نوشته کامپایل کردن پایتون ۳.۱۰ از سورس کد اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

پادکستی که امروز حال منو خوب کرد ❤️

پادکست رادیو صفر و یک

سلام ، امروز صبح که بیدار شدم نوتیفیکشن گوشیم یه پادکستی رو نشون میداد و منم جذب شدم که گوش بدم پادکست بی نظیر بود و به همین خاطر دوست داشتم همینجا آپلودش کنم تا بچه های ویرگولی هم بتونند ازش استفاده بکنند.

نوشته های زیر خلاصه ی ذهنی من از این پادکست است که ممکنه ناقص نوشته باشم و پیشنهاد میدم خود پادکست را گوش بدید که بالا آپلود کردم براتون ❤️❤️

پادکست در حوزه ی فناوری و برنامه نویسی

پادکست فوق العاده ای که من گوش دادم در مورد زندگی یه برنامه نویس بود که توش داستان های آموزنده ای برای من داشت و من هنوز بعد از چندین ساعت درگیرش هستم و دوبار هم گوش دادمش

یه فردی با این شخصیت و عظمت مگه میتونه باشه ؟‌

یه فردی چنین متواضع که دنیا رو عوض کرده و میتونست پولدارترین فرد روی زمین باشه ولی دست رد گذاشته روی ثروت و شهرت و …

پادکست فناوری و برنامه نویسی

شخصیت اول این پادکست یه فردی بود به اسم لینوس توروالدز که لینوکس رو ساخته البته من به لینوس علاقه ای ندارم و شاید در آینده باهاش کار کنم ولی داستان و روایت های این پادکست انقدر جالب بود که دوبار پادکست رو از اول تا آخر گوش دادم و لذت بردم ..


زندگینامه ی لینوس توروالدز

پادکست زندگی لینوس توروالدز

این پادکست همانطور که بالا هم گفتم در ژانر بیوگرافی هست و روایت هایی از زندگی لینوس توروالدز رو بیان میکنه که لینوکس را ساخته البته فضای پادکست میخوره فضای داستان سرایی باشه و تعریفات گوینده بسیار جذاب هست و من فکر میکنم به همین زودی یکی از برترین و بزرگترین پادکست های فارسی زبان میشه

لینوس توروالدز یک برنامه نویسی هست که در سال ۱۹۶۹ در شهر هلسینکی فنلاند چشم به جهان گشوده است. پدر مادرش آرزوی دانشمند شدن او را داشتند و اسمش را از دانشمند بزرگ آن زمان به اسم لینوس پاولینگ گذاشتن.

لینوس پاولینگ دانشمند شیمی هست که دو بار جایزه ی نوبل برده و جزو چهار نفری هست که دوبار توانستند جایزه ی نوبل را برنده شوند.

اسم لینوس از این دانشمند گرفته شده و زمانی که کودک بوده پدربزرگی به اسم لئو داشته که یک کامپیوتر کومودور بهش کادو میده به نام vic-20 که باعث میشه لینوس توروالدز به دنیای برنامه نویسی علاقه مند بشه…

لینوس در مدرسه جزو افرادی بوده که همیشه جایزه های ریاضیات را برنده میشده و در زمینه ی ریاضیات نخبه بوده است.

همین ریاضیات در حل مسائل پیچیده ی لینوس احتمالا کمکش کرده

زبانی که شروع کرده به یادگیری BASIC بوده و سپس ASSEMBLY را یاد گرفته ولی اصلی ترین زبان برنامه نویسی که بعدا یاد گرفته زبان قدرتمند سی بوده که لینوکس را هم با این زبان برنامه نویسی نوشته….



داستان خلق لینوکس

چیزی که من در این پادکست به دست آوردم شاید با خوندن صدها مقاله بدست نمی آوردم داستان خلق لینوکس هست و بسیار ساده و خلاصه تایم لاین خلق لینوکس در این پادکست گفته شده است.

داستان خلق لینوکس

دلیل خلق لینوکس :

  • لینوس توروالدز از سیستم عامل داس بدش میومد چون محدود بود
  • یونیکس پولی بود و دوست نداشت پنج هزار دلار بابت یه سیستم عامل بده
  • مینیکس ناقص بود

و همین ها دلیل کافی بود که لینوس توروالدز بشینه و یه کرنل برای سیستم عامل بنویسه … اما هرگز قرار نبود پروژه ای بزرگ و جهانی با هدف تحول دنیا بشه … بلکه یه پروژه شخصی و تفریحی برای ارضای خواسته های یه جوان بود که بتونه روی کامپیوتر خودش کار بکنه …

اری لمکه یه فردی بود که برای اولین بار لینوکس را منتشر کرد لینوس توروالدز در ابتدا نام Linux را روی این سیستم عامل گذاشته بود که ترکیب Linus + Unix Like بود ولی چون احساس میکرد یکم خودخواهانه هست اسم Freax را انتخاب کرد که ترکیب Free + Unix like بود . ولی زمان انتشار این سیستم عامل توسط اری لمکه همون اسم قبلی یعنی Linux انتخاب شد و روی ftp جهت دانلود همه قرار گرفت.

همین نقطه ی شروع لینوکس بود تا به دست هزاران نفری بیوفته که قرار بود براش کار بکنند و آینده ی کامپیوتر جهان را متحول بکنه …

افتخارات لینوس توروالدز برای ساختن لینوکس

سیستم عامل لینوکس توسط ۳ و نیم بیلیون کاربر در جهان مورد استفاده است که بیشترین استفاده ی لینوکس برای مدیریت سرورهاست ولی میشه روی همه چی نصبش کرد.

کرنل اندروید هم لینوکسی هست و اگر اندروید را هم لینوکسی حساب کنیم پس لینوکس بعنوان محبوب ترین کرنل جهان حساب میشه و یه نوعی محبوب ترین سیستم عامل جهانم هست.

سال ۲۰۰۱ کنسول پلی استیشن دو که پرفروش ترین کنسول بازی جهان بود از لینوکس استفاده میکرد.

شرکت IBM از همون اول به لینوکس علاقه نشون داد و روش سرمایه گذاری کرد بطوریکه الان سوپرکامپیوترهای IBM با لینوکس اجرا میشوند.

دلیل اصلی اینکه این پادکست رو د وس داشتم

این پادکست علاوه بر اینکه مفاهیم آموزشی در حوزه ی فناوری منتقل میکنه بصورت داستانی هم هست من معمولا زیاد روی پادکست ها تمرکز ندارم و تا آخر گوش نمیدم ولی سازنده ی این پادکست نمیدونم چطوری ساخته که من این پادکست رو امروز دوبار تا آخر گوش دادم. داستان های تعریف شده از روایت های مختلف خیلی جذاب بود

سری پادکست داستان زندگی برنامه نویسان موفق

در ابتدای این پادکست گوینده اعلام میکنه که این پادکست سریالی هست یعنی قراره ادامه داشته باشه و من فکر میکنم هر پادکست روایتی از زندگی یکی از برنامه نویسان رو میخاد بگه که من شیفه ی چنین پادکست هایی هستم . مخصوصا تم پادکست و آهنگ هایی که توش هست بسیار لذت بخش بود .

من سعی میکنم فایل صوتی پادکست رو همینجا هم اپلود کنم حالا گوینده ی پادکست که سام نیکزاد هست گفته پادکست رو منتشر کنید من نمیدونم این کارم درست و یا باید لینکی چیزی میدادم ولی خب ایمیل رو د ر آخر پادکست میگه میتونید با گویندش ارتباط داشته باشید

حرف رو زیاد کش نمیدم پادکست رو گوش بدید و لذت ببرید

منبع : اپیزود ۱ پادکست رادیو صفر و یک در anchor

نوشته پادکستی که امروز حال منو خوب کرد ❤️ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

مراحل اصولی طراحی وب

سلام

طبق پیشنهادی که توی نوشته قبل بهتون دادم تصمیم گرفتم مراحل اصولی رو خدمت شما عزیزان مطرح کنم.

فرانت اند

برای طراحی اصولی بایستی 2 تا اصطلاح رو یاد بگیرید ، یکی فرانت اند و یکی بک اند که در این مطلب در مورد فرانت اند توضیح میدم خدمتتون ، فرانت اند یعنی ظاهر قضیه ، بک اند یکی فعالیت هایی که بایستی با کد به سرور فهموند که انجام بده ، یه مثال ساده بزنم تصور کنید شما یه شمایل انسانی دارید که بک اند استخوان بندی فرد هست و فرانت اند گوشت و پوست و مو ، یعنی شما توسط فرانت اند به استخوان بندی یه ظاهر شیک میدید و همگان این ظاهر رو میبینن و فرانت اند همون استخوان بندی هست که کسی ازش خبر نداره و پشت ظاهر هست .

برای یادگیری فرانت اند بایستی مراحل زیر رو طی کنید:

1-تاریخچه طراحی وب رو بدونید ( برای اطلاعات عمومی )

2-بلد شدن HTML – بنیاد و اساس شروع طراحی هست.

3-بلد شدن – CSS – وظیفش اینه که شمایل سایت رو شکیل کنه.

4-بلد شدن Java Script – یک زبان برنامه نویسی خیلی قدرتمند هست که بدونید شما رو از دیگر طراحان متمایز تر میکنه.

در این میون چند تا فریم ورک هم هست که برای طراحی فرانت اند استفاده میشه که دو تا مطرحش رو نام میبرم یکی Bootstrap و یکی Tailwind این دو تا رو هم اگر بلد بشید واقعا شما رو حرفه ای میکنه توی کارتون.

بعضی از اصطلاحات هست که من به کار میبرم بهتر هست خودتون برید و در موردش مطالعه کنید که ب شما خیلی کمک میکنه.

این تا اینجا ، توی پست بعدی در مورد بک اند هم توضیح میدم…

به امید دیدار

نوشته مراحل اصولی طراحی وب اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

ما،‌ الگوهای معماری، الگوریتم‌ها-بخش۱ ports & adaptors

سلام،‌این پست اولین پست وبلاگی من هست و امیدوارم اگه مشکلاتی داشت مخصوصا در مورد موضوع خوشحال می‌شم به من اطلاع بدید


حالا داستان چیه؟‌ اولا بگم که من دولوپر ارشد نیستم و درحال یادگیری‌ام،‌ ولی تازگی‌ها توی سایت‌های مختلف و گروه‌های برنامه نویسی می‌بینم خیلی‌ها به دیزاین پترن‌ها و الگوریتم ها گیر میدن، نه فقط در ایران قضیه توی زبان انگلیسی هم خیلی تکرار میشه احتمالا تا الآن باید حداقل یکبار این توییت وایرال شده رو دیدید

توییت وایرال شده در باره الگوریتن ها

خب به علت همین قضیه مجاب شدم چندتایی از دیزاین پترن‌ها و الگوریتم‌هایی که حداقل من می‌دونم خیلی کاربردی هستن رو اینجا درحد خودم توضیح بدم تا هم خودم بهتر یادبگیرم و هم اینکه اگه اشتباهی دارم دیگرن لطف کنن و اصلاح کنند حرفم رو.

تو این بخش قصد دارم درباره‌ی کاربرد دیزاین پترن Mediator و command بنویسم و کاربردش توی راحت تر کردن کار اجرای الگوی معماری معروف به پورت ها و آداپتورها یا همون معماری هشت ضلعی Hexagonal architecture.

احتمالا اگه تا الآن در حال کار کردن با الگوی طراحی هشت ظلعی،‌ به جایی رسیدید که تعداد زیادی لایه بیرونی خواهید داشت که نیاز به استفاده از لایه اپلیکیشن داشته باشند،‌ درست مثل نمونه تصویر اول پست. مثلا بخش گزارش گیری نیاز داره درباره مدل‌های اپ خبر داشته باشه و همینطور رابط گرافیکی و همزمان API ها و بخش مربوط به تست ها،‌ هم همینطور،‌ حالا چی میشه اگه شما بخوای اینترفیس (Interface) بخش کامندها بکنید چی میشه؟ با فرض بر اینکه شما از اصل Dependency inversion پیروی کردید و حالا نیازمندی های بخش مدل‌ها عوض شده مثلا فکر کنید در حال اجرای اپلیکیشنی مثل گوگل میت هستید و حالا میخواید بخش کلندر رو تازه اضافه کنید. و وقتی که کسی براش جلسه ست شده یا لغو شد یا هر اتفاقی تغییری توی استیت شون افتاد ایمیل بفرستید برای کاربرها و میخواید ایمیل رو به صورت async بفرستید. چندتا از سرویس‌ها تو رو باید ریفکتور کنید؟ وقتی که ارسال ایمیل اضافه شد باید همه سرویس هایی که از مدل های داخلی استفاده میکنند باید ریفکتور بشن.

حالا اینجا دیزاین پترن‌های میدیتور و کامند به کار میان و میتونن کمک کنند. اما چطور؟

اول یه نگاهی به خود دیزاین پترن ها بندازیم:‌

اول Mediator

دیزاین پترن میدیتور

خلاصه این دیزاین پترن اینه که هرجا دیدید لایبرری‌ها تون نیاز دارن درباره همدیگه بدونن و تعداد بخش هایی که قراره از هم بدونن زیاده بیاید یه کلاس(یا لایبرری) بزارید وسطش که همه با اون کلاس کار کنن و اون کلاس در باره همه لایه های زیریش(تو تصویر بالا قسمت سمت راست) بدونه و بدونه کدوم ورودی رو به کدوم خروجی وصل کنه. در اصل بخش سمت راست خودش ور برای مدیتور داوطلب انجام کاری که بخش چپ درخواست میکنه، میکنه جالبی مدیتور اینه که میتونه اصلا بخشی از کد شما نباشه مثلا مسیج بروکر هایی مثل RabbitMQ یا مثلا Redis.

دیزاین پترن command

بهترین توصیف کامند

خلاصه این یکی دیزاین پترن اینه که هروقت تسکی داشتید که میخواست استیت رو عوض کنه و نیاز بود از جاهای مختلفی اینکار انجام بشه (مثل دکمه سیو که هم ctrl+s هست هم تو منو فایل هم توی آیکون سیو) بیاید و اون تست رو بدید به کلاس جدا گونه برای انجامش و از هرجا لازم شد فقط متد execute روی اون کلاس رو کال کنید تو مدل گوگل میت که بالاتر گفتم میشه sessionManger.AddNewSession(sessionInfo) دیگه کار فرستادن ایمیل و اضافه کردن دیتا بیس و اینا همه با سشن منیجره.

خب حالا چطور اینا کمک میکنن که ما کدمون راحت تر منیج بشه؟

با استفاده از ترکیب مدیتور و کامند میشه اجرای بخش ثبت اتفاقات و ایمیل فرستادن رو کاملا از سرویس ها مخفی کرد و فقط متدهایی رو که تسک های ساختن جلسات و ارسال ایمیل رو هم زمان برای مدیتور register کرد و سرویس ها فقط توی خودشون به مدیتور بگن میخوام کامند ثبت جلسه اجرا بشه، همین

چیزی مثل ساختار مدل زیر که اشتباهاتی توی درست کردنش داشتم ولی بخش قرمز در اصل اون مدیتور ماست و بخش های قرمز واسط های اجرای لاجیک اصلی یا بیزینس لاجیکمون هستن

اگه اشتباه نگارشی داشت معذرت میخوام و خوشحال میشم بم تو کامنتا بگید

اگه اشتباه فنی هم داشت بازم خوشحال میشم بگید و کمک کنید بیشتر یاد بگیرم.

ممنون

نوشته ما،‌ الگوهای معماری، الگوریتم‌ها-بخش۱ ports & adaptors اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

معرفی خودم

معرفی خودم

دوستان عزیز این اولین پست من هست من علاقمند به برنامه نویسی مخصوصا پایتون و بحث هوش مصنوعی هستم . اگر کسی میتونه کمکی بکنه اطلاع بده . بعدا پستهای خوبی برای شما میذارم مخصوصا در مورد کرونا. فعلا تاکید میکنم از کرونا نترسید …

نوشته معرفی خودم اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

آموزش طراحی وب

آموزش طراحی وب و کد نویسی صفحات وب ( فرانت اند و بک اند )

وب

بعد از مدتی قصد نوشتن دارم ، تصمیم گرفتم که مبانی طراحی وب رو برای شما عزیزان بنویسم !

دوستانی که مشتاق هستند دنبال کنند و در نظرات حتما عنوان کنن تا میزان اشتیاق شما رو ببینم

هدف از آموزش اینه که شما یک زبان برنامه نویسی رو یاد بگیرید ، یک حرفه بلد بشید ، یک منبع درآمد داشته باشید ( بعضی افراد علاقه ای ندارن درآمدی از این راه بدست بیارن و هدفشون دلی هست )

عزیزان و دوستانی که تمایل دارن در نظرات اعلام کنن و دنبال کنن تا از روند کار مطلع بشن

منتظرم …

نوشته آموزش طراحی وب اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

بیل گیتس چطور ثروتمند شد؟

داستان های زیادی درباره ی بیل گیتس خوندیم. اما من یکبار برای همیشه نشستم و زندگی این مرد و تمام محصولاتی که خلق کرده را بررسی کردم و به یک نتیجه ی خوبی رسیدم که تقریبا در زندگی افرادی که موفق هستند کاملا صدق میکرد. شاید نوشته های این مقاله با باور بسیاری از انسان ها هم خوانی نداشته باشه ولی واقعیتی هست که من بهش دست یافتم ازش نتیجه گرفتم و الان بهش معتقدم . هر کس با اختیار خود ادامه ی مقاله را میتواند بخواند یا نخواند اجباری نیست و در عمل کردن به آنها هم من تعهدی ندارم هرکس اگر خواست با اختیار خود به آنها عمل کند و ایمان بیاورد.

بیل گیتس چطور موفق شد ؟

چه چیزی بیل گیتس را ثروتمند ساخت ؟

اشتباه اشتباه باز هم اشتباه ! خیلی از افراد قاطعانه جواب این سوال را مایکروسافت یا ویندوز اعلام میکنند . اگر از این افراد سوال کنید بیل گیتس چطور ثروتمند شد پاسخ این دسته از افراد مشخص و از قبل تعیین شده است و خارج از لیست زیر نیست توجه کنید :

  • بیل گیتس مادر پرنفوذی داشته است.
  • بیل گیتس از خانواده ی اصیل و ثروتمندی بوده است.
  • بیل گیتس به واسطه ی موقعیتی که پیش آمده بود ویندوز را ساخت و ثروتمند شد یعنی اگر در زمانه ی دیگری بود نمیشد موفق بشود.
  • بیل گیتس پدری بسیار ثروتمند داشت که کمکش کرد و سرمایه ی خوبی داشت
  • بیل گیتس ترک تحصیل کرد بخاطر همین موفق شد.

تمام پاسخ های بالا صد در صد اشتباه است.چون مثال نقص های زیر را برای پاسخ های بالا در نظر بگیرید :‌

  • بیل گیتس مادر پرنفوذی داشته است ؟ وارن بافت مادری ناشناخته به نام لیلا داشت ولی همیشه پا به پای بیل گیتس جزو ثروتمندترین افراد جهان بوده است.
  • بیل گیتس خانواده ی اصیل و ثروتمندی بوده ؟ استیو جابز موسس اپل که ثروتمندترین کمپانی جهان است هرگز مادر و پدر اصیل خود را در زندگی ندید چون او را در کودکی به خانواده ی دیگری سپردند و در حقیقت پدرش یک مهاجر سوریه ای بود که اصالت امریکایی و درست و حسابی نداشت .
  • بیل گیتس به واسطه ی موقعیتی که پیش آمده بود ویندوز را ساخت و ثروتمند شد یعنی اگر در زمانه ی دیگری بود نمیشد موفق بشود؟ موقعیت زمانی مسخره ترین چیز در زمینه ی موفقیت است که همیشه شنیده میشود برای مثال یکی میگوید چون در آن زمان بافت فرش و فروش فرش رونق نداشت یکی اومده فرش های گرد بافت و میلیارد شد … در هر زمان چیزهای جدیدی است که خلق شود و موفق شود مطمئن باشید همان زمان که بیل گیتس مایکروسافت و ویندوز را ساخت هفت میلیارد آدم روی زمین هم میتوانستند چنین ایده ای پیاده کنند ولی نه میخواستند نه اعتقادی به پیشرفت داشتند.
  • بیل گیتس پدری بسیار ثروتمند داشت که کمکش کرد و سرمایه ی خوبی داشت ؟ این هم که مثالش همان استیو جابز است و خیلی از افراد که در خانواده های بسیار فقیر رشد کرده اند و بیلیون ها دلار سرمایه دارند
  • بیل گیتس ترک تحصیل کرد بخاطر همین موفق شد ؟ مثال نقص خوب این ایلان ماسک است که یکی از پرقدرت ترین افراد و ثروتمندترین افراد هست و در رشته های مختلفی تا آخر ادامه ی تحصیل داده است و از انها استفاده هم کرده است.

پس بیل گیتس را ویندوز یا مایکروسافت یا سهام فلان شرکت خاص موفق نکرده است بیل گیتس تقریبا تمام اقداماتی که انجام داده است موفق بوده است و در هر زمان و موقعیتی موفقیت به سراغش رفته است پس دنبال دلیل بیرونی مثل موقعیت مکانی و زمانی و یک محصول خاص و … نگردید بلکه درون بیل رو باید نگاه کنید.

موفق کننده ی بیل گیتس درون او بوده است قدرت تحمل بالا و تمرکز روی کاری که قصد دارد درآن موفق شود مهمترین عامل بوده است

البته عامل خواستن بی تاثیر نیست بیل گیتس واقعا میخاسته اولین ثروتمند جهان باشه و برای رسیدن بهش هر کاری که لازم بوده را انجام داده است.

از چالش سطل یخ بیل گیتس چه درسی میگیریم ؟‌

چالش سطل یخ معمولا بین انسان های معروف اتفاق میوفتد و این حرکت برای حمایت از بیماران ALS می باشد و یک حرکت نمادین است.

افراد معروف و بزرگ این چالش را با خانواده یا دوستان به سادگی انجام میدهند. انجام این چالش به این شکل است که یک سطل پر از آب یخ را روی سر یک نفر میریزند …

تیم کوک مدیر اپل در حال اجرای چالش سطل یخ

به تصویر بالا نگاه کنید میبینید که هیچ چیز خاصی وجود ندارد یک نفر در حال ریختن آب یخ روی مدیر اپل هست و همه ی افراد هم این چالش را همینطوری اجرا میکنند ولی بیل گیتس یه تفاوت اساسی داشت علاوه بر اینکه چالش را برای حمایت از بیماران برگزار کرد بلکه میخواست پیام هایی را هم منتقل کند.

بیل گیتس برای اانجام این کار با دستگاه جوشکاری و ابزارهای مختلفی سیستمی را ساخت که با کشیدن طناب آب یخ را روی سر او بریزد . این پیامی است برای پیشرفت انسان

انسان ها برای انجام کارهای خود دیگر نیاز به انسان های دیگری ندارند حتی یک کار ساده ی سطل یخ را میتوان با سیستمی پیاده سازی کرد که نیاز به حتی اعضای خانواده ی خودت هم نباشد

پیام دوم مهم این حرکت بیل گیتس لذت بردن از هر چیزی هست و خلاقیت به خرج دادن برای حتی کوچکترین چیز که یک کلیپ چند دقیقه ای چالش سطح یخ باشد

چالش سطل یخ بیل گیتس

شاید برای کاری که در عرض دو دقیقه انجام میگیرد و یکبار کلیپ از آن ضبط خواهد شد یک الی دو روز زمان گذاشته میشود ولی نتیجه چطور است ؟

ویندوز که پرفروش ترین محصول مایکروسافت هم بود دقیقا به همین شکل ساخته شد تا تبدیل شود به موفق ترین سیستم عامل جهان !

مدت زمانی که برای انجام کاری صرف میکنید زیاد مهم نیست به نتیجه نگاه کنید آیا نتیجه ی کار ارزشمند است ؟‌اگر پاسخ بله هست قطعا تمام انسان ها از چیز ارزشمند حمایت خواهند کرد …

دلیل پیشرفت سریع بیل گیتس ‌چه بوده است ؟

همه ی ما میدانیم که در ابتدا بیل گیتس یک برنامه نویس بوده و موفقیت های بزرگ و اولیه خود را نیز از راه برنامه نویسی کسب کرده است . بیل گیتس نسبت به دیگر رقبای خود از سرعت بالاتری در ارائه ی محصولات منظم و دقیق داشت و همین امر باعث موفقیت او در بازار میشد و رقبا را یک به یک کنار میزد.

بیل گیتس تقریبا از ۱۵ سالگی ثروتمند شد و ثروتمند بودنش تا به امروز هرگز متوقف نشده است چون پیشرفت و ثروتمند شدن در اصل زندگی این بشر است.

البته کارهایی که بیل گیتس در آن زمان ها انجام داده است را برنامه نویس ها بیشتر درک میکنند و من از زمانی که برنامه نویسی را شروع کرده ام با افراد در این حوزه بیشتر درگیر بوده ام.

باور به اینکه میشود چنین ثروت هایی را ایجاد کرد باعث شد افرادی به سرعت بیل گتس را جلو بزنند اما دلیل دیگر بالا رفتن سن بیل گیتس و بازنشستگی او از شرکت های خودش بوده است.

بیل گیتس خیلی زود خودش را بازنشسته کرده است از شرکت مایکروسافت در حالیکه ۴۵ ساله بود برای همیشه رفت …

اگر این را با مدیران دیگری مقایسه کنید میبینید که بیل گیتس خیلی سریعتر بازنشسته شده است مثلا در مقایسه با استیو جابز که تا اخرین روز عمر خود در اپل کار میکرد.

نوشته بیل گیتس چطور ثروتمند شد؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

بی منطقی های جاواسکریپت

جاواسکریپت زبان معروفیه و همیشه جزو زبان های پر استفاده قرار میگیره
ولی خب منتقدان زیادی داره و بی منطقی های زیادی
بعضیاش باعث میشه مغزتون سوت بکشه

خب یه لیست خیلی طولانی از این موضوع هست به اسم wtf.js که میتونید توی این ریپوی گیتهاب ببینید
چند تاش خیلی جالب بود گفتم با هم ببینیم


۱. درست همان اشتباه است !

ببینید برعکس برعکس یه چیزی باید بشه خودش تا اینجا قبول ؟
خب توی برنامه نویسی ! یعنی برعکس و !! یعنی برعکس برعکس

برعکس برعکس درست میشه درست
ولی برعکس برعکس اشتباه هم میشه درست

!!&quotfalse&quot == !!&quottrue&quot // -> true
!!&quotfalse&quot === !!&quottrue&quot // -> true

دیگه حرفی نیست …

۲. یک آرایه خالی مساوی برعکس یک آرایه خالیست

قبلی قبوله آقا
برعکس یه چیزی آیا میشه خودش ؟ ( یکی نیاد بگه مثلا کیک ، حروف رو نمیگم درست و اشتباه بودن و بولین رو میگم )
ولی توی جاواسکریپت میشه

[] == ![]; // -> true

عالی اصلا ( به رو خودتون نیارید عصبی شدم :/ )

۳. یک چیز مساوی خودش نیستتتت :///////

تست کنید
از javascript هاتون بخواهید براتون تست کنه آیا NaN مساوی NaN هست یا نه

NaN === NaN; // -> false

۴. موز

&quotb&quot + &quota&quot + +&quota&quot + &quota&quot // -> 'baNaNa'

فکر کنید دو تا مثبت NaN بده
همینقدر مسخره
یه نمونه دیگه :

&quotfoo&quot + +&quotbar&quot // -> 'fooNaN'

به قول معروف : wtfjs ?

۵. یک آرایه خالی درست نیست ولی درست است

!![]       // -> true
[] == true // -> false

ببینید یک ارایه خالی فالس میده

ولی برعکس برعکسش درسته
یا فالسه و مثل فالس برعکس برعکس درست میشه
یا درسته ولی توی حالت عادی نمایش داده نمیشه

۶. کوچیکترین عدد ممکن از صفر بزرگتر است

Number.MIN_VALUE > 0; // -> true

خب یکی توی استک اور فلو پرسیده اگر حوصله تون میکشه از این لینک بخونید
خلاصه بگم کوچیکترین عدد میشه 5e-324

۷. یکی از تابع ها بده !

parseInt(&quotf*ck&quot); // -> NaN
parseInt(&quotf*ck&quot, 16); // -> 15 

نکته که این مثال من نیست مثال wtfjs میباشد
دلیلش هم اینه توی هگزا دسیمال f میشه ۱۵

۸. ریاضیات با درست و اشتباه

اگر بدونید ترو میشه ۱ و فالس ۰
بیایید با این عددا ریاضی انجام بدیم

true + true; // -> 2
(true + true) * (true + true) - true; // -> 3

ما با درست و اشتباه ریاضی حل کردیم هورا

دلیلش :

Number(true); // -> 1

۹. آرایه خالی و هیچی شی هستند !

typeof []; // -> 'object'
typeof null; // -> 'object'
null instanceof Object; // false

خب null یه شیئه و ارایه خالی هم یه شئ ( OBJEC ) عه ، مشکل چیه ؟

کلا تایپآف یه سری قاط داره که خیلی از بی منطقی های جاواسکریپت توی typeof میباشد
لینک اکما اسکریپت درباره typeof : کلیک

۱۰. اعداد اعشاری

0.1 + 0.2; // -> 0.30000000000000004
0.1 + 0.2 === 0.3; // -> false

بله دیگر
مشکلات محاسبات ریاضی
توی خیلی از زبان ها البته این شکلی


حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن😉

کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنید

راستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!

اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره😃

© منابع : تمشک ، wtfjs

نوشته بی منطقی های جاواسکریپت اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی