جان باکوس

جان وارنر باکوس (زاده ۳ دسامبر، ۱۹۲۴ (میلادی) - درگذشته ۱۷ مارس، ۲۰۰۷ (میلادی)) دانشمند آمریکایی در زمینه علم رایانه بود. او رهبری گروهی را به عهده داشت که اولین زبان برنامه‌نویسی سطح بالا (فورترن) را اختراع نمودند. او همچنین مخترع فرم باکوس نائور (یا به اختصار BNF) نیز بود که تقریبا پراستفاده‌ترین نمادگری برای تعریف نحو (Syntax) زبان‌های صوری است.
او در سال ۱۹۷۷ (میلادی) برای «مشارکت‌های ژرف، تاثیرگذار، و ماندگارش برای طراحی سامانه‌های برنامه‌نویسی کاربردی سطح بالا، و خصوصا بخاطر کار بر روی فورترن» و انتشار اولین مقالات در مورد شیوه‌های صوری برای توصیف زبان‌های برنامه‌نویسی، جایزه تورینگ را دریافت کرد.
زندگی‌نامه
جان باکوس در سال ۱۹۲۴ در فیلادلفیا متولد شد. دوران تحصیلات ابتدائی و متوسطه را در پنسیلوانیا گذراند. او شاگرد تنبلی بود و از خواندن کتاب‌های درسی نفرت داشت. بالاخره با زحمت زیاد در سال ۱۹۴۲ مدرسه را تمام کرد و وارد دانشگاه ویرجینیا شد. پدرش می‌خواست که او شیمیدان شود. او دروس نظری را دوست داشت ولی از آزمایشگاه بدش می‌آمد. او تنبلیهای قبلی را در دانشگاه ادامه داد. بعد از دو ترم او تنها یک واحد را گذرانده و آنهم واحد موسیقی بود! سرانجام مسوولان دانشکده عذرش را خواستند و او در سال ۱۹۴۳ به ارتش پیوست.
در آنجا در یک آزمون استعدادسنجی شرکت کرد و نتیجه این آزمون، جانش را نجات داد؛ دوستانش به جبهه‌های جنگ فرستاده شدند و او به کالج هاورفورد برای آموزش پزشکی فرستاده شد. اما درآنجا نیز ۹ ماه بیشتر دوام نیاورد.
او می‌گوید:
«من از پزشکی بیزار بودم. در دانشکده پزشکی دوست ندارند فکر کنی. فقط می‌خواهند مطالب زیادی را حفظ کنی و این تمام چیزی است که از آدم می‌خواهند. در دانشکده پزشکی نباید فکر کرد!»
پس از خروج از دانشکده پزشکی، آپارتمان کوچکی در نیویورک به قیمت ماهانه ۱۸ دلار اجاره کرد. او درباره آن روزها می‌گوید:
«واقعا نمی‌دانستم از زندگی چه می‌خواهم. تصمیم گرفتم یک دستگاه صوتی خوب خریداری کنم زیرا خیلی به موسیقی علاقه داشتم. در آن روزها دستگاه خوب وجود نداشت بنابراین به یک مدرسه فنی رفتم تا درست کردن دستگاه‌های صوتی را یاد بگیرم. در آنجا معلم بسیار خوبی داشتم نخستین معلم خوبی بود که دیده بودم. او از من خواست که با او همکاری کنم و مشخصات بعضی از مدارها را محاسبه کنم. به یاد دارم که محاسبات ساده ولی بسیار وقتگیر و خسته‌کننده‌ای بود ولی مرا به ریاضیات علاقه‌مند ساخت. کاربردی بودن آن برایم خیلی جالب بود.»
کار در شرکت آی‌بی‌ام
باکوس در دانشکده علوم دانشگاه کلمبیا ثبت نام کرد تا با درس‌های ریاضی بیشتر آشنا شود. او علاقه‌ای به ریاضیات نداشت ولی از جبر بدش نمی‌آمد. در بهار سال ۱۹۴۹، باکوس ۲۵ ساله که تنها چند ماه تا اخذ لیسانس ریاضی فاصله داشت، هنوز برنامه خاصی برای زندگی آینده‌اش نداشت.
در آن روزها یکبار بازدیدی از مرکز رایانه شرکت آی‌بی‌ام داشت و از نزدیک با ماشین حساب الکترونیکی SSEC که یکی از نخستین ماشینهای الکترونیکی آی‌بی‌ام (با لامپ خلاء) بود آشنا شد. این ماشین اتاق بزرگی را اشغال کرده بود و انباشته از سیمها و لامپهای خلاء بود. ناگهان فکری به سرش زد و به راهنمای تور گفت که به دنبال کار می‌گردد. او به بکوس گفت که باید با مدیر قسمت صحبت کند.
او ابتدا امتناع کرد زیرا سر و وضع مناسبی نداشت ولی با اصرار راهنمای تور به دیدار مدیر مربوط رفت و سپس در آزمونی شرکت کرد. نتیجه آزمون رضایت‌بخش بود و او به استخدام آی‌بی‌ام در آمد تا بر روی SSEC کار کند. SSEC یک رایانه به مفهوم امروزی نبود. حافظه‌ای برای ذخیره نرم‌افزار نداشت و برنامه‌ها را باید از طریق نوار منگنه کاغذی به آن می‌خوراندند. همچنین به دلیل به کار رفتن هزاران مولفه الکترومکانیکی، این ماشین قابلیت اطمینان پائینی داشت.
«کار کرد با SSEC جالب بود. همه چیز در اختیار خود آدم بود. باید بالاسر آن حاضر می‌بودیم زیرا هر دو سه دقیقه یکبار از کار می‌افتاد و باید می‌دانستیم که چگونه آن را دوباره به راه اندازیم.»
او ۳ سال با SSEC کار می‌کرد و در خلال این مدت چیزهای زیادی آموخت. برنامه‌سازی هنوز در مراحل اولیه‌اش قرار داشت و بکوس نیز نخستین تجربیاتش را در زمینه محاسبات علمی کسب کرد.
سرپرستی طراحی زبان فورترن
کارت منگنه‌ای قدیمی فرترن.
باکوس در آی‌بی‌ام با همکاری هارلن هریک برنامه‌ای به نام SpeedCoding برای انجام محاسبات با ممیز شناور تولید کرد. اعداد با ممیز شناور ضریب مقیاس‌گذاری را با خود حمل می‌کردند و برنامه ساز را از کار پر زحمت تخصیص ضرایب رهایی می‌بخشیدند. تجربیان بکوس از SpeedCoding چالش‌های ذهنی دیگری را در او به وجود آورد.
«برنامه‌سازی بسیار پر هزینه بود. میلیون‌ها دلار صرف اجاره رایانه‌ها می‌شد و هزینه برنامه سازی نیز اگر از آن بیشتر نبود کمتر هم نبود. باید تعداد زیادی برنامه ساز استخدام می‌شدند تا برنامه‌هایی به زبان اسمبلی که تنها یک قدم از صفر و یک‌ها فاصله داشت بنویسند. برنامه‌سازی به زبان اسمبلی بسیار وقت‌گیر و پر خطا بود و اشکال‌زدایی برنامه‌ها در اکثر اوقات باعث می‌شد که هدف نهایی برنامه گم شود.»
در دسامبر ۱۹۵۳، بکوس یادداشتی برای رئیسش در آی‌بی‌ام، گوتبرت هرد ، نوشت و پیشنهاد کرد که یک زبان برنامه نویسی برای ماشین آی‌بی‌ام ۷۰۴ طراحی شود. این پروژه، به نام Formula Translation یا به اختصار فورترن معروف شد. هدف آن خیلی روشن بود. بکوس می‌گوید:
«منظور من فقط به دست آوردن ابزاری بود که برنامه‌سازی با آن بسیار سریع‌تر انجام گیرد. اصلا در فکر این نبودم که این ابزار ممکن است در ماشین‌های دیگر هم مورد استفاده قرار بگیرد. البته ماشین‌های دیگر هم در آن زمان به ندرت یافت می‌شدند.»
در ابتدا اظهار نظرهای منفی فن نویمان جلوی پروژه را گرفت. او در آن زمان مشاور آی‌بی‌ام بود. بکوس می‌گوید:
«او برنامه‌سازی را مسائله مهمی نمی‌دانست. فکر می‌کنم یکی از دلایل عمده مخالفت او این بود که از دقت محاسبات با ممیز شناور اطمینان نداشت. در مورد محاسبات با ممیز ثابت، اگر اشکالی وجود می‌داشت حداقل می‌شد به راحتی محل آن را یافت. دیگر اینکه وی هیچ گونه حساسیتی نسبت به موضوع هزینه برنامه‌سازی نداشت. او واقعا احساس می‌کرد فورترن یک تلاش بیهوده است.»
سر انجام هرد پروژه را تصویب کرد و فن نویمان هم دست از مخالفت برداشت. بکوس تعدادی برنامه ساز با تجربه و چند ریاضیدان جوان تازه فارغ‌التحصیل شده‌استخدام کرد. در پاییز ۱۹۵۴ تیم برنامه‌سازی و تحقیقاتی او هدف روشنی پیش رو داشت: تولید زبانی که برنامه‌سازی را برای ماشین آی‌بی‌ام ۷۰۴ ساده‌تر کند. آن‌ها به زودی دریافتند که طراحی زبان، بخش ساده کار است و چالش اصلی، ترجمه آن به زبان قابل درک برای ماشین است. یعنی برنامه‌ای که امروز، مترجم (کامپایلر) خوانده می‌شود. بکوس و تیم او الگوریتم‌هایی را که این روزها هر دانشجوی دوره کارشناسی می‌تواند به کمک آن‌ها در طول یک ترم به طراحی و پیاده‌سازی یک کامپایلر جدید برپردازد در دست نداشتند. مخصوصا روش خوبی برای طراحی قلب کامپایلر که تجزیه گر خوانده می‌شود به نظرشان نمی‌رسید.
پس از مدتی اولین نرم‌افزار کاربری که به زبان فورترن نوشته شد با موفقیت اجرا گردید ولی دانشمندان وستینگهاوس بزودی تعداد زیادی خطا در کامپایلر فورترن پیدا کردند. تیم بکوس ضرف مدت ۶ ماه خطاهای گزارش شده را تصحیح کردند.
قالب زبان‌های نابسته به متن
بکوس در اواخر دهه ۱۹۵۰ کار بر روی زبان فورترن را متوقف کرد. هرچند که کار اصلی او در زمینه زبان‌های برنامه‌سازی تازه آغاز شده بود.
در ماه مه ۱۹۵۸، یک کمیته بین‌المللی متشکل از دانشمدانی از بخش‌های تجاری و دانشگاهی در زوریخ تشکیل شد. هدف آنها، توسعه زبان فورترن و دستیابی به یک زبان واحد و استاندارد برای برنامه‌سازی بود. این زبان بعدا به نام الگول معروف شد.
بکوس ایده‌های به کار رفته در الگول را پسندید ولی از نحوه بیان آن خوشش نیامد. به گفته او:
«آنها همه چیز را به انگلیسی توضیح داده بودند و به نظرم رسید که باید کاری کرد تا بتوان به صورت دقیقتری به بیان این‌گونه مفاهیم پرداخت.»
برای حل این مشکل، بکوس گرامر مستقل از متن را که به تازگی توسط نوام چامسکی زبان‌شناس معروف اختراع شده بود، به کار گرفت. اختراع تازه باکوس بعدا به نام فرم باکوس نائور معروف شد که آن هم داستان جالبی دارد.
افتخارات و جوایز
کار در آی‌بی‌ام (۱۹۶۳)
برنده جایزه مک‌داول والاس(۱۹۶۷)
دریافت نشان ملی علوم (۱۹۷۵)
برنده جایزه تورینگ (۱۹۷۷)
عضو فرهنگستان هنر و دانش آمریکا (۱۹۸۵)
دریافت نشان افتخار از دانشگاه هانری پوانکاره (۱۹۸۹)
برنده جایزه دراپر (۱۹۹۳)
برنده جایزه موزه تاریخ کامپیوتر (۱۹۹۷)
نام‌گذاری سیارکی به نام ۶۸۳۰ Johnbackus به افتخار وی توسط دو ستاره‌شناس ژاپنی (ژوئن ۱، ۲۰۰۷)
بازنشستگی
باکوس در سال ۱۹۹۱ بازنشسته شد و از دنیای علوم کامپیوتر و حتی علوم کناره گرفت. از آن تاریخ دانشمندان دیگر کار بر روی زبان‌های تابعی و حل مشکل آن‌ها را ادامه داده‌اند. او خود به درون نگری و مکاشفه پرداخته است و می‌گوید:
«اغلب دانشمندان به این دلیل دانشمند شده‌اند که از مواجه با زندگی می‌هراسیده‌اند. آن‌ها در کنج آزمایشگاهها یا کتابخانه‌ها از خلاقیت علمی خود لذت برده‌اند بی‌آنکه با مردم مواجه شوند و مشکلات ناشی از ارتباط با دیگران را تجربه کنند و راه خود را در زندگی هموار کنند. دنیای خود ساخته آن‌ها بسیار جالب است، دنیای پر از امکانات ارضاء‌کننده و شادی بخش و خالی از رنج و ناراحتی. ناراحتی و مشکلات حل یک مسئله در مقایسه با ناراحتی‌هایی که افراد در زندگی با آن‌ها مواجهه می‌شوند بسیار ناچیز است.