۱. وقتی توی وب جستجو کنید درباره زبان برنامهنویسی جاوا، به دو تا مطلب خیلی جالب درموردش میرسید: اول این که جاوا زبان برنامه نویسی آسونیه و دوم این که زبان جاوا کنده. این مطالب تقریبن توی هر معرفی ای که از جاوا دیدم، بهشون اشاره شده بود. البته جستجو های من درمورد جاوا بیشترش حدود دو یا سه سال پیش بود ولی فکر نکنم تغییر زیادی رخ داده باشه این چند سال. ولی نکتهی جالب اینجاست: زبان برنامه نویسی جاوا، نه زبان کندی حساب میشه و نه آسون.
۲. این که جاوا کند و کم سرعته درواقع زمانی درست بوده. بخاطر این که برنامه های نوشته شده به زبان جاوا، روی ماشین مجازی جاوا اجرا میشدن، سرعتشون نسبتن کم بود(نسبت به زبان مثلن سی، خیلی کم بود). ماشین مجازی جاوا یه خلاقیت خیلی باحال بوده اون زمان. این امکان رو میداده که برنامه ها فقط یه بار نوشته بشن و کامپایل بشن و همه جا، روی هر سیستم و سیستم عاملی اجرا بشن. اضافه شدن یه لایهی نرمافزاری که بین برنامهی نوشته شده و سیستم عامل قرار میگرفت، باعث میشد برنامههای جاوایی کندتر باشن. این قضیه توی نسخههای اولیهی جاوا خیلی شدید بود ولی از تقریبن جاوای ۱.۴ به بعد خیلی خیلی کم و کمتر شد کندی جاوا و مثلن اگر امروز برید و بنچ مارکهایی از جاوا رو ببینید میبینید که سرعتش اونقدرهام پایین نیست.
۳. آسونی و سادگی جاوا هم زمانی درست بوده، تا حدودی. سینتکس جاوا خیلی سرراست تر و ساده تر از زبانی مثل سی پلاس پلاس بود( و هست) و اون زمان حرف این بود که جاوا زبان سادهایه. سادگیای که منظور بود، سادگی یادگرفتن سینتکس و دستورات بود، و نه سادگی برنامه نویسی. مثلن توی ارثبری، برید تفاوت جاوا و سی پلاس پلاس رو ببینید. توی جاوا خیلی راحت از کلمه کلیدی extends استفاده میشه. توی سی پلاس پلاس اما انگار با جادو جمبل طرفیم و تا جایی که یادمه از دو تا دونقطه پشت هم استفاده میشه، انگار مجبور بودن از علامت ها استفاده کنن و علاقهای به کلمات نداشتن آقای استراستروپ. خلاصه این که سادگی ای که جاوا بهش معروف بوده، سادگی ظاهری بوده. این چیزیه که خیلی از برنامه نویس ها رو گمراه میکنه. فکر میکنن که با جاوا برنامه نویسی راحت تره و مثلن با چالش های ذهنی کمتری مواجه میشن، درحالی که اینطور نیست و همچنان مهارت داشتن توی برنامه نویسی، چیزی جدا از زبانه(تقریبن).
۴. جاوا که زمانی کند ولی آسون بوده رو اگر الان بخوایم توصیف کنیم، باید دقیقن برعکس بگیم. جاوا دیگه کند نیست، حتی در عملکرد از خیلیها بهتر هم هست. اما در مقابل، توی آسونی، جاوا اصلن آسون نیست. برخلاف زبان پایتون که خیلی سرراست و شسته رفتهس، جاوا خیلی دست و پا گیره، توی برنامه نویسی با جاوا، چیزی که زیاده، هرزنویسیه. این که باید کلی کلمه رو تایپ کنه برنامه نویس بیچاره تا بتونه نتیجه بگیره. داستانهایی که پشت زبان های برنامه نویسی هستن همیشه درست نیستن. جاوا یک نمونهی خیلی خوب بود. این قضیه فقط هم به دنیای برنامه نویسی محدود نمیشه. خیلی وقتا اطلاعاتی که ما داریم حالت تحریف شده یا بدتر از اون، اطلاعاتی ان که زمانی درست بودن و دیگه نیستن، اما همچنان مردم بهشون اعتقاد دارن. اطلاعات بروز داشتن توی شناختن تکنولوژی های جدید خلاصه نمیشه. باید توی چیزهایی که میشناسیم هم تآمل دوباره کنیم.
شرکت ما در دو واحد امنیت و نرمافزار! از دو زبان پایتون و جاوا استفاده میکنه.
من یه سری حین کلکل دوستانه با همکاران جاوا کار، به اونها در خصوص سینتکس hello world گفتم و مقایسه تقریبا همچین چیزی بود:
public static void class extends ….
در مقابلش پایتون print “hello world!”
رسما انتظار هر چیزی رو داشتم غیر از اینکه “این نامردیه! تو شبهه کد پایتون رو اوردی با کد عادی جاوا مقایسه میکنی!” حدود ۱۰ دقیقه طول کشید تا بفهمم که اونها فکر میکنن که من بخش مربوط به public static void مربوط به پایتون رو حذف کردم و فقط print رو نوشتم! 🙂
با این حال، جاوا واقعا زبان سخت! و سریعی هستش. ولی بازم به نظرم یه جاوا کار فقط جاواکاره… ولی یه مثلا پایتون کار، گاها تنهٔ استکش یا به سی میخوره، یا به HTML/CSS/JS ! ماهایی که تنمون به کل استک پایتون و همراهانش خورده!!! از سی گرفته تا ریکتجیاس!! بازم وقتی کد جاوا رو میبینم، حتی از سی و سیپلاس سخت تر و پیچیده تر به نظر میرسه!!
با این حال، ظاهرا یکی از تمیزترین کدها رو بهت تحویل میده.