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

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

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

۳. ولی چرا؟ واقعن چرا باید وقتمون رو پای چیزی هدر بدیم که یقین داریم بده؟ فقط چون یه درصد احتمالش هست که بعد از ۴۰۰ صفحه کتاب حوصله سر بر، نویسنده یهو منقلب بشه و دو صفحه جالب بهمون هدیه بده؟ نمی صرفه واقعن. مثلن احمد شاملو یه چهره برجسته توی ادبیات ایرانه. من امسال کتاب روزنامه‌ی سفر‌ میمنت‌اثر ایالات متفرقه‌ی امریغ رو ازش شروع کردم به خوندن. واقعن ده صفحه هم نتونستم تحمل کنم. حالا بیام به خودم بگم که نه، شاملو خیلی شخص مهمیه. چه حاصل؟ عمر رفته برنمی‌گرده. این همه‌ دارم می‌نویسم که بگم واقعن مطالعه‌ هم بعضی وقتا رفتار‌های نه چندان منطقی توی ما ایجاد می‌کنه و باید ازشون اجتناب کرد. استادی داشتم که شاید تاثیر گذار ترین توصیه رو به من – و همکلاسی هام – کرد اوایل دانشجوییم: هیچ کتابی ارزش این رو نداره که از اول تا آخرش رو بخونیم. آدم باید فقط اون قسمت از کتاب رو بخونه که واقعن بهش نیاز داره. هرچند که خیلی ساده‌س اما واقعن خیلی‌هامون بهش توجه نمی‌کنیم. مثلن چند نفر رو دیدین که تصمیم گرفتن جاوا یاد بگیرن،‌ بعد با وجود این که مثلن مفهوم متغیر‌ها یا حلقه‌ها رو درک کردن، میان فصل متغیر یا حلقه‌ی جاوای دایتل رو  واو به واو می‌خونن،‌بعد از مطالب تکراری خسته می‌شن و کلن قید جاوا – یا در خوشبینانه ترین حالت اون کتاب – رو می زنن. جسارت چشم بستن به ۴۰۰ صفحه از یه کتاب ۶۰۰ صفحه‌ای رو داشتن چیزیه که به ما واقعن توی پیشرفت کمک می‌کنه.

تب یا اسپیس؟ درآمد اونایی که اسپیس رو ترجیح می‌دن بیشتره

۱. این مطلب رو یکی دو جا دیدم این اواخر که پر آب و تاب ترینش توی فاسبایت بود: برنامه‌نویس‌هایی که اسپیس رو به تب ترجیح می‌دن، درآمد بیشتری دارن، تقریبن ۸ درصد. درظاهر شاید جذاب به نظر بیاد ولی در باطن یقینن غلطه.

تب یا اسپیس

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

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

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

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

زبان کند و آسون جاوا

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

جاوا: ساده و کند

۲. این که جاوا کند و کم سرعته درواقع زمانی درست بوده. بخاطر این که برنامه های نوشته شده به زبان جاوا، روی ماشین مجازی جاوا اجرا می‌شدن، سرعتشون نسبتن کم بود(نسبت به زبان مثلن سی، خیلی کم بود). ماشین مجازی جاوا یه خلاقیت خیلی باحال بوده اون زمان. این امکان رو می‌داده که برنامه ها فقط یه بار نوشته بشن و کامپایل بشن و همه جا، روی هر سیستم و سیستم عاملی اجرا بشن. اضافه شدن یه لایه‌ی نرم‌افزاری که بین برنامه‌ی نوشته شده و سیستم عامل قرار می‌گرفت، باعث می‌شد برنامه‌های جاوایی کند‌تر باشن. این قضیه توی نسخه‌های اولیه‌ی جاوا خیلی شدید بود ولی از تقریبن جاوای ۱.۴ به بعد خیلی خیلی کم و کمتر شد کندی جاوا و مثلن اگر امروز برید و بنچ مارک‌هایی از جاوا رو ببینید می‌بینید که سرعتش اونقدرهام پایین نیست.

۳. آسونی و سادگی جاوا هم زمانی درست بوده، تا حدودی. سینتکس جاوا خیلی سرراست تر و ساده تر از زبانی مثل سی پلاس پلاس بود( و هست) و اون زمان حرف این بود که جاوا زبان ساده‌ایه. سادگی‌ای که منظور بود، سادگی یادگرفتن سینتکس و دستورات بود، و نه سادگی برنامه نویسی. مثلن توی ارث‌بری، برید تفاوت جاوا و سی پلاس پلاس رو ببینید. توی جاوا خیلی راحت از کلمه کلیدی extends استفاده می‌شه. توی سی پلاس پلاس اما انگار با جادو جمبل طرفیم و تا جایی که یادمه از دو تا دونقطه پشت هم استفاده می‌شه، انگار مجبور بودن از علامت ها استفاده کنن و علاقه‌ای به کلمات نداشتن آقای استراستروپ. خلاصه این که سادگی ای که جاوا بهش معروف بوده، سادگی ظاهری بوده. این چیزیه که خیلی از برنامه نویس ها رو گمراه می‌کنه. فکر می‌کنن که با جاوا برنامه نویسی راحت تره و مثلن با چالش های ذهنی کمتری مواجه می‌شن، درحالی که اینطور نیست و همچنان مهارت داشتن توی برنامه نویسی، چیزی جدا از زبانه(تقریبن).

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

اتم: ادیتور دوست داشتنی

۱. یه سریا ویژوال استودیو رو می‌پرستن. واقعن هم حق دارن. فکر کن می‌خوای کد بزنی. دو سه تا کاراکتر می‌زنی، بقیه دستور و فانکشن و کلاس و … رو خودش برات می‌اره. فکر کن داری از یه کلاس استفاده می‌کنی ولی یادت نیست اسم اون متدی که میخواستی استفاده کنی چی بود. یه نقطه می‌ذاری،‌ کنترل اسپیس و اجی مجی همه متدهاش لیست میشه برات. خوبه. نیست؟ نیست آقا. نیست!

نرم افزار ویرایشگر اتم

۲. این که IDE به ادم کمک کنه خوبه. ولی به چه قیمتی؟ اتفاقی که واسه دات نتی ها میفته اینه که بدون ویژوال استودیو تقریبن نصف مهارت برنامه نویسی خودتشون رو از دست می‌دن. چرا؟ چون از همون اول بد عادت می‌شن،‌ وابسته می‌شن به ویژوال استودیو. البته این درمورد جاواکار ها و اینتلیجی، اندرویدیا و اندروید استودیو، پایتون و پایچارم و  در کل هر زبون و IDEای صادقه.

۳. اتم رو خیلی دوست دارم. یه ادیتور ساده با کلی ویژگی خوب. اولین خوبیش اینه که – مخصوصن توی پروسه یادگیری- مجبور میکنه برنامه نویس رو که همه چیز رو خودش بنویسه. البته یه سری کمک می کنه ها. ولی خب اینا اسمشون کمکه، نه این که بیاد کل کار رو از رو دوش برنامه نویس برداره.

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

 

چرا پایتون؟

۱. سوالی که خیلی وقتها از من پرسیده می‌شه اینه: چرا پایتون؟ چرا پی اچ پی نه؟ چرا دات نت نه؟ چرا جاوا نه؟ خب جوابهای متنوعی هست که می‌شه به این سوال داد. این جا یکیش رو می نویسم و امیدوارم که فرصت بشه از هر زاویه‌ای بررسیش کنم.

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

۲. پایتون زبان جدیدی نیست. در واقع از نظر قدمت تقریبن هم سابقه جاوا حساب می‌شه و از دات نت و سی شارپ هم پیرتره. اما تا حدودی گم نام تر از الباقیه. بارها اتفاق افتاده که آدم ها بدون آگاهی داشتن، من رو متهم کنن به استفاده از زبان گمنام و بدون کاربرد. اما پایتون شاید معروف نباشه(که داره می‌شه)‌ اما اصلن بدون کاربرد نیست.

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

۴. کد‌های زیر رو نگاه کنید:

پایتون در مقابل سی و جاوا

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

۴. توی مطالب بعدی احتمالن برم سراغ گستردگی حوزه‌هایی که پایتون توشون قابل استفاده‌س. همینطور اینکه کجا و چرا باید پایتون رو به مثلن جاوا ترجیح داد و چیزای دیگه‌ای از این دست. اگر برنامه‌نویس و مخصوصن برنامه‌نویس پایتون هستید ممنون می‌شم تجربیاتتون درمورد پایتون رو برام کامنت کنید یا توی به جیمیل resa.keshavarz بفرستید (به املای ادرس حتمن دقت کنید). شاید بتونیم با همفکری پایتون رو جور بهتری معرفی کنیم به تازه برنامه‌نویس ها یا اونایی که هنوز از پایتان زیاد آگاه نیستن.

 

  •  درواقع تلفظ درست اسم این زبان می‌شه پایثان. ث هم به صورت تلفظ عربیش منظورمه. ولی خب از اونجایی که این صامت توی زبان فارسی زیاد رایج نیست به ت بسنده شده. پس تلفظ معقول می‌شه پایتان. ولی خوب یا بد پایتون رایج تره و اینجا هم یکی درمیون از هردو اسم استفاده کردم که یکی به میخ و یکی به نعل خورده باشه.