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

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

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

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

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

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

اوبونتو و پشیمونی و تصمیم درست

۱. اوبونتو ۱۷.۱۰ امروز منتشر شد. بزرگترین تغییرش هم دسکتاپشه که یونیتی جاشو به گنوم داده. البته سعی شده که همچنان – با وجود تغییرات واضح- چندان هم متفاوت با یونیتی نباشه و توی ذوق نزنه. شاید لینوکسی‌ها اوبونتو رو بیشتر از هرچیزی به یونیتی می‌شناختن. ولی خب یونیتی تموم شد. پروژه یونیتی عملن یه پروژه مختومه س.

ubuntu-17-10-gnome-3_orig

۲. یونیتی قسمتی از یه تلاش نافرجام کنونیکال بود برای تولید کردن سیستم عاملی که همزمان روی موبایل و کامپیوتر قابل استفاده باشه. یه چیزی مثل همون ویندوز۸ ناکام. ولی اینجا نکته این بود که درواقع هسته لینوکس همین الانش روی نصف بیشتر تلفنای هوشمند هست. سختی قضیه رابط کاربری بود که خب توی موبایل و کامپیوتر خیلی تفاوت داره. این تلاش کنونیکال که ۴ ۵ سال هم طول کشید بالاخره با اعلام تسلیم تموم شد.

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

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