زبانهای برنامهنویسی تاحدودی طرز تفکر دولوپرها و شرکتهایی که از آنها استفاده میکنند را دستخوش تغییر میسازند و همین میشود که استارتاپهای حوزهٔ فناوری -که غالباً با زبانهای برنامهنویسی سروکار دارند- سبکوسیاق متفاوتی نسبت به سایر کسبوکارها داشته و این امکان را دارند تا خود را بارها و بارها بازآفرینی کنند. در همین راستا، در این مقاله قصد داریم ببینیم که انتخاب یک زبان برنامهنویسی چگونه و به چه شکل میتواند Mindset (طرز تفکر) کاربرانش را دگرگون سازد.
نگاهی به شکلگیری زبان Ruby
زبان Ruby که در ساخت و طراحی بسیاری از سایتهای دنیای وب مانند Twitter و Hulu استفاده شده، توسط دانشمند ژاپنی علوم کامپیوتر Yukihiro Matsumoto ابداع شده است. در زمان ایجاد این زبان، Matsumoto از یک رمان علمی-تخیلی به نام Babel-17 به نویسندگی Samuel R. Delany در سال 1966 ایده میگرفت. در این رمان، زبانی به همین نام اختراع شده بود که ذهن افرادی که به این زبان صحبت میکردند را ارتقاء میداد. قهرمان داستان در جایی میگوید که «Babel-17 اینقدر زبان دقیق و منطقیه که توی هر موقعیتی باشی، بهش تسلط کامل داری!»
Matsumoto هم با اختراع زبان Ruby در پی همین بود؛ به عبارت دیگر، زبانی ابداع کند تا طرز تفکر برنامهنویسان را از نو طراحی کرده و ارتقاء دهد. ایدۀ Matsumoto شاید خیلی بلندپروازانه باشد، اما خیلی هم عجیب و افراطی نیست. دولوپرها همیشه تصور میکنند که زبانهای برنامهنویسی چنان تأثیری روی ذهن دارند که رویۀ حل مشکلات را تغییر میدهند. جالب است بدانیم که برخی برنامهنویسهای متفکر با سؤالی با این مضمون که «از کدام زبان استفاده میکنید؟»، دست به سنجش شرکتها، محصولات نرمافزاری، و همردههای خود میزنند!
هر فرد غریبهای با پاسخ این سؤال میتواند شرکتهای نرمافزاری قدرتمند و باارزش را بشناسد و با محصولات و خدماتی که روی زندگی روزمرۀ ما تأثیر میگذارند آشنا شود. شاید انتخاب یک زبان مانند Ruby ،PHP یا #C برای ساختن محصول نرمافزاری جدید به ظاهر یک تصمیم خصوصی و داخلی باشد، اما در واقع میتواند تأثیر زیادی روی سایرین بگذارد.
نگاهی به شکلگیری زبان PHP
برای شناختن ظاهر فیسبوک و طرز کار آن و خدمات فعلی و بعدی آن برای مردم، باید با زبان PHP آشنا شد که مارک زاکربرگ برای ساخت فیسبوک در ابتدا به کار گرفت (البته پس از مدتی، مهندیسن فیسبوک زبانی تحت عنوان Hack را ابداع کردند که برگرفته از همین زبان PHP بود. برای آشنایی بیشتر با این زبان، به مقالهٔ ابداع زبان هک توسط فیسبوک مراجعه نمایید).
میتوان گفت که زبان PHP در میان برنامهنویسان کمترین عزت و احترام را دارا است! یک وبلاگ صاحبنظر دربارۀ معایب زبان PHP، آن را تحت عنوان «الگویی بدقواره» توصیف کرد و این در حالی است که بسیاری از سایر دولوپرها، برنامهنویسانِ این زبان را آماتور و ناشی تلقی میکنند. Jeff Atwood یکی از همبنیانگذاران سایت Stack Overflow ظرف 10 دقیقه، القابی مانند «هیولای بدپیکر»، «بیماری واگیردار» و «خانۀ جنزده» به PHP نسبت داد! همچنین وی دربارهٔ این زبان گفته است:
مهندسی بیمانندی که در ساخت فیسبوک استفاده شده، قصه و افسانهای بیش نیست! سازندگان فیسبوک با ویندوز XP کد PHP مینوشتند. آنها هکر در معنای وقیح کلمه بودند.
بیشتر زبانهای برنامهنویسی موفق، یک فلسفه کلی دارند که اصطلاحات و منطق آنها را در یک مجموعه کلی نظم میدهد اما PHP به این صورت نیست. حتی سازندۀ آن -Rasmus Lerdorf- هم بیمحابا اقرار میکند که همین طوری این زبان را سرهم کرده است. وی در مصاحبهای در سال 2003 گفت:
نمیدونستم چهطور جلوش رو بگیرم؛ اصلاً بلد نبودم چهطوری زبان برنامهنویسی بسازم! فقط ادامه میدادم و مراحل منطقی رو به ترتیب اضافه میکردم.
مثال مورد علاقۀ برنامهنویسها، یک فانکشن PHP به اسم mysql_escape_string است که قبل از فرستادن یک کوئری به دیتابیس، اینپوت مخرب را از آن جدا میکند (به عنوان نمونهای از یک ورودی مخرب میتوان به فرمی در یک وبسایت اشاره کرد که آدرس ایمیل کاربر را میخواهد اما هکر میتواند کدی در آن فرم قرار دهد که بتواند کوئریهای مخرب روی دیتابیس اجرا کند). وقتی که متوجه باگ در این فانکشن شدند، فانکشن جدیدی به PHP اضافه کردند تحت عنوان mysql_real_escape_string اما هرگز آن فانکشن باگدار را حذف نکردند! نتیجۀ کار، چیزی شد شبیه به دو دکمۀ کنار هم در کابین خلبانی:
- یکی از دکمهها چرخهای فرود را باز میکند،
- و دیگری همین کار را با امنیت بیشتری انجام میدهد!
اما با وجود این تنفر فراگیر از PHP، قسمت زیادی از فضای وب با همین زبان ساخته شده است. طبق آمار منتشر شده توسط وبسایت W3Techs در سال ۲۰۱۸، بیش از ۸۳٪ درصد وبسایتهای حال حاضر دنیا با PHP ساخته شدهاند. ویکیپدیا و سیستمهای مدیریت محتوای وردپرس، دروپال و جوملا همگی با زبان برنامهنویسی PHP پیادهسازی شدهاند و دلیل این مسئله هم این است که PHP با وجود این همهٔ این نواقص، برای شروع عالی است (برای شروع یادگیری این زبان، میتوانید به دورهٔ آموزش PHP در سکان آکادمی مراجعه نمایید).
نام این زبان در ابتدا از حروف اول Personal Home Page گرفته شده بود؛ در واقع، با PHP اضافه کردن محتوای پویا مانند تاریخ یا نام کاربر به صفحات استاتیک HTML خیلی آسان شد. جهش از مرحلهٔ سروکله زدن با یک وبسایت به مرحلهٔ نوشتن یک برنامۀ تحت وب آنقدر با PHP راحت شده بود که اصلاً حس نمیشد. در یک کلام، برای چنین کاری اصلاً نیازی به تخصص و حرفهای بودن نبود.
Ori Livneh یکی از مهندسهای نرمافزاری Wikimedia Foundation است که این شرکت پروژۀ Wikipedia را اداره میکند. او گفته که آماده به کار بودن PHP برای موفقیت این پروژه، نقشی حیاتی داشته است. وی در مصاحبهای گفت که «همیشه از PHP متنفر بودم و هستم.» پروژۀ Wikipedia به خاطر وابستگی به این زبان، نواقص بزرگی در طراحی دارد اما PHP این امکان را فراهم کرد تا کسانی که تخصصی در مهندسی نرمافزار نداشتند، بتوانند به سادگی کد بزنند. به همین صورت بود که Wikipedia توانست مثلاً الفبای باستانی مصری را نشان دهد یا علائم و نوتهای موسیقی را به کار ببرد.
اما چیزی مثل گوگل را نمیشود با PHP ساخت زیرا این سایت برای گوگل شدن میبایست یک کار را خوب و کامل انجام میداد (جستجوی گوگل میبایست سبک و سریع و با طراحی مهندسی دقیق انجام میشد). پس با زبانهای قویتری مثل Java ،Python و ++C ساخته شد. اما فیسبوک در ابتدا مثل بازارچهای از آزمایشهای کوچک و منویی پر از دکمه، پست، و ابزار برای جلب توجه مخاطب بود و PHP هم به خوبی از عهدهٔ چنین کاری برمیآمد.
میشود زاکربرگ را در خوابگاه دانشگاه هاروارد در روز مهم تولد فیسبوک تصور کرد که تمام تلاش خودش را میکرد تا سایتش را آنلاین کند. وب چنان سریع است و کاربران آنقدر دمدمی بودند که تنها راه برای موفق بودن این بود که متفاوت باشید. فرقی نمیکرد که کدی مرتب میزد یا به سبک اسپاگتی، زاکربرگ در هر صورت تمامش کرد و برای مردم هم قابل استفاده بود. به عبارت دیگر، به فکر کد خوب و منظم نبود، فقط میخواست دوستانش وارد این وبسایت بشوند و عکس دیگر دوستان خود را ببینند.
حال فیسبوک میلیاردها دلار ارزش دارد و روی دیوارهای شرکتش تابلوهایی با مضامینی همچون «کار تمام شده بهتر از کار بینقص است» و یا «با سرعت به پیش بروید و از خراب کردن نترسید.» پر شده است. حکمت این پیامهای جسورانه، این است که کارکنان را با فرهنگ هکری شرکت هماهنگ نگاه دارند؛ حرکت سریع رو به جلو و خراب کردن، جوهرهٔ اصلی PHP است و چنان در برنامهنویسان آن نهادینه شده که مانند بیماری لاعلاج به همین شکل هم فکر میکند. میتوان گفت همین زبان، فرهنگ فیسبوک را خلق کرده و میچرخاند.
نگاهی به شکلگیری زبان OCaml
در مقام مقایسه، شرکت تجاری-مالی Jane Street Capital در سوی دیگر طیف قرار دارد. این شرکت با 400 کارمند، حدود 2٪ از میزان تجارت سهام روزانهٔ در آمریکا را به خود اختصاص میدهد. Yaron Minsky مدیر بخش تکنولوژی این شرکت است و دکترای علوم کامپیوتر دارد. حدود 10 سال پیش، وی از یکی کارمندانش خواسته بود که سیستم تجاری شرکت را به زبان ناشناختهای به اسم OCaml بنویسد. این زبان در یک موسسهٔ پژوهشی در فرانسه برای تقویت سیستم کامپیوتری اثبات نظریات ریاضی ساخته شده بود؛ و این در حالی بود که قبل از Minsky کسی از این زبان برای پروژۀ واقعی استفاده نکرده بود. اما Minsky میخواست این زبان را جایگزین Excel کند.
موفقیت OCaml به خاطر ویژگیای به نام Type System است که چیزی شبیه Grammar Checker در نرمافزار آفیس ورد است با این تفاوت که به جای کشیدن خط قرمز زیر کلمات اشتباه، اجازه نمیدهد برنامه اجرا شود. برنامههایی که در مرحلهٔ تولید با Type System نوشته میشوند، خیلی معتبرتر هستند به خصوص وقتی که قرار باشد 30 میلیارد دلار پول مردم را در روز محاسبه کنند! Minsky میگوید تایپ سیستم OCaml باگها را شناسایی میکند و برنامهنویسان شرکت میتوانند به مشکلات مهمتر رسیدگی کنند (شاید به مرور زمان آنقدر ایرادگیری این زبان را توسعه داده باشند که به یک زبان جدید تبدیل شده باشد و جایی برای تفکر اشتباه وجود نداشته باشد).
اما زبان OCaml هم معایب خاص خود را دارد. مثلاً باید توضیحاتی در کد نوشته شود که OCaml با کمک آن توضیحات بتواند ایراد کد را شناسایی کند. یک عیب دیگر این است که ریاضیات به کار رفته در این زبان بسیار پیچیده است و کدنویسی با این زبان کار هر برنامهنویسی نیست.
بیشتر برنامهنویسان با وجود تنفر از PHP، از محصولات آن مانند فیسبوک و ویکیپدیا استفاده میکنند و از همان طرز تفکر پیروی میکنند. اما همین سختی و پیچیدگی OCaml فرصتی ایجاد کرده که فقط افراد خاص با صلاحیتهای خاص و با تفکر هوش رقابتی جذب شرکتی بشوند که کارکنان آن در زمان فراغت و استراحت، شطرنج 4 نفره بازی میکنند (ظاهراً گوگل هم با طراحی زبان Go هدفی مشابه را دنبال میکند. Go میخواهد وب را به محیطی شیکتر و کارآمدتر تبدیل کند. این زبان، مثل پارچهٔ قرمزی است که فقط کدنویسهای جسور و تنوعطلب را جذب میکند).
بلوغ و تکامل فیسبوک و ناکارآمدی PHP
در اواخر سال 2010 فیسبوک دچار بحران شد؛ زبان PHP برای ارائهٔ عملکرد خوب ساخته نشده بود، اما این در حالی بود که از این زبان عملکرد خوب میخواستند. این سایت با چنان سرعتی در حال رشد بود که اگر یک تغییر اساسی در آن ایجاد نمیشد، از هم میپاشید.
جایگزین کردن PHP غیرممکن بود. در واقع، فیسبوک از میلیونها خط کد PHP ساخته شده بود، هزاران مهندس داشت که متخصص نوشتن آن بودند و بیش از نیم میلیارد کاربر داشت. در عوض، گروه کوچکی از مهندسان ارشد انتخاب شدند تا با یک پروژۀ اختصاصی، راهی برای ادامۀ حیات فیسبوک بدون از دست دادن زبان مادریاش -یعنی پیاچپی- پیدا کنند.
قسمتی از این راه حل، عبارت بود از ساختن کامپایلری که کد PHP فیسبوک را به کد سریعتر ++C برگردان کند؛ معجزۀ دیگری که باید انجام میشد، مهندسی زبانشناسانۀ کامپیوتری بود که برنامهنویسان فیسبوک بتوانند با حفظ فرهنگ PHP خود، کد بهتری بنویسند.
گروه نجات، با ابداع گونهٔ جدیدی از زبان PHP به نام Hack به هدف خود رسیدند. Hack همان PHP است که تایپ سیستم اختیاری به آن اضافه شده باشد؛ به عبارت دیگر، برنامهنویس میتواند یا همان کد درهم و سریع PHP را بنویسد و یا با اضافه کردن Annotation به کد، به تایپ سیستم اجازه بدهد صحت کد را بررسی کند. فیسبوک میخواست کدنویسان با همان سرعت و آسایش با زبان بومی خود به پیش بروند، اما دیگر مثل گذشته چیزی را خراب نکنند و در نهایت کار تا جایی پیش رفت که زاکربرگ از یک شعار مهندسی جدید رونمایی کرد با این مضمون که «با حفظ ثبات زیرساخت، با سرعت به پیش بروید.»
تقریباً در همان زمان، توئیتر هم تغییر شکل مشابهی داشت. این شبکهٔ اجتماعی با زبان روبی و فریمورک محبوب آن یعنی Ruby on Rails ساخته شده بود. پس از مدتی، سیل کاربران بود که هجوم آوردند. وقتی کسی با صدها هزار فالوئر پست جدیدی میگذاشت، تایملاین صدها هزار نفر دیگر هم باید بلافاصله آپدیت میشد. چنین پستهای بزرگی، مرتباً سیستم را سنگین میکرد و مهندسان مجبور میشدند سایت را متوقف کنند تا بتواند خود سیستم را بهروزرسانی کند (جالب است بدانید که توییتر آنقدر این کار را کرد که لوگوی Fail Whale قرار گرفته در Maintenance Page (صفحهٔ بهروزرسانی)، شهرهٔ خاص و عام شد!)
در همین راستا، توئیتر قسمتهای عظیمی از سایت را با زبان Scala جایگزین کرد تا بتواند جلوی این مشکل را بگیرد. جای تعجب ندارد که Scala هم مانند OCaml، توسط دانشمندان ساخته شده و از یک تایپ سیستم قوی برخوردار است و همچنین به صحت و عملکرد بیشتر بها میدهد، حتی به قیمت گرفتن آزادی و لذت از برنامهنویسان (برای کسب اطلاعات بیشتر، به مقالهٔ آشنایی با زبان برنامهنویسی Scala مراجعه نمایید).
کلام آخر
درست همانطور که استارتاپها با فهمیدن راه کسب درآمد بالغ میشوند، میتوانند با استفادهٔ هوشمندانه از قدرت زبانهای برنامهنویسی، طرز تفکر سازمانی خود را تغییر دهند. Guido van Rossum طراح زبان برنامهنویسی پایتون است که 7 سال برای گوگل کار کرد و پس از مدتی به دراپباکس پیوست. وی اعتقاد دارد وقتی که یک شرکت نرمافزاری تا حد معینی رشد میکند، تنها راه جلوگیری از بحران، استفاده از زبانی است که از همان اول برنامهنویس را بیشتر درگیر کند؛ به قول وی، «حس میکنی داره از سرعتت کم میکنه، چون باید هر چیز رو سه بار بگی.» در واقع، با انتخاب یک زبان سختگیرتر، اعضای شرکت سورسکد یکدیگر را بهتر میفهمند و محصول نهایی ثبات لازم برای استفاده روزمره را خواهد داشت (البته چنین ادعایی ۱۰۰٪ نیست).
همین قابلیت مانور استارتاپهای نرمافزاری، باعث قدرت زیاد آنها شده است. این کسبوکارهای نوپا میتوانند تغییرات اساسی سازمانی داشته باشند و خود را بازسازی کنند. علاوه بر این، چون اساس آنها از کد ساخته شده، میتوانند فرهنگ و طرز تفکر خودشان را هر موقع که خواستند، از نو بنویسند (البته به شرطی که خیلی دیر نشده باشد).
شما از چه زبانی استفاده میکنید و این زبان چه تأثیری روی شخصیت و طرز تفکر شما داشته است؟ به نظر شما تأثیر این زبان روی شما، مخرب بوده یا سازنده؟ در قسمتی از مقاله گفتیم که هر زبان فلسفه و اصول خود را دارد. به نظر شما کدام زبان بهترین اصول و فلسفه و در نتیجه مثبتترین تأثیر را روی دولوپرش دارد؟ نظرات و دیدگاههای خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.