moji5
28th February 2010, 08:31 PM
جان بکوس مخترع خستگی ناپذیر
جان بکوس در سال 1924 در فیلادلفیا متولد شد. دوران تحصیلات ابتدائی و متوسطه را در پنسیلوانیا گذراند. او شاگرد تنبلی بود و از خواندن کتابهای درسی نفرت داشت. بالاخره با زحمت زیاد در سال 1942 مدرسه را تمام کرد و وارد دانشگاه ویرجینیا شد. پدرش میخواست که او شیمیدان شود. او دروس نظری را دوست داشت ولی از آزمایشگاه بدش میآمد. او تنبلیهای قبلی را در دانشگاه ادامه داد. بعد از دو ترم او تنها یک واحد را گذرانده و آنهم واحد موسیقی بود! سرانجام مسوولان دانشکده عذرش را خواستند و او در سال 1943 به ارتش پیوست.
در آنجا در یک آزمون استعدادسنجی شرکت کرد و نتیجه این آزمون، جانش را نجات داد؛ دوستانش به جبهههای جنگ فرستاده شدند و او به کالج هاورفورد برای آموزش پزشکی. اما درآنجا نیز 9 ماه بیشتر دوام نیاورد.
پس از خروج از دانشکده پزشکی، آپارتمان کوچکی در نیویورک به قیمت ماهانه 18 دلار اجاره کرد. او درباره آن روزها میگوید:
«واقعاً نمیدانستم از زندگی چه میخواهم. تصمیم گرفتم یک دستگاه صوتی خوب خریداری کنم زیرا خیلی به موسیقی علاقه داشتم. در آن روزها دستگاه خوب وجود نداشت بنابراین به یک مدرسه فنی رفتم تا درست کردن دستگاههای صوتی را یاد بگیرم. در آنجا معلم بسیار خوبی داشتم نخستین معلم خوبی بود که دیده بودم . او از من خواست که با او همکاری کنم و مشخصات بعضی از مدارها را محاسبه کنم. به یاد دارم که محاسبات ساده ولی بسیار وقتگیر و خستهکنندهای بود ولی مرا به ریاضیات علاقهمند ساخت. کاربردی بودن آن برایم خیلی جالب بود.»
بکوس در دانشکده علوم دانشگاه کلمبیا ثبت نام کرد تا با درسهای ریاضی بیشتر آشنا شود. او علاقهای به ریاضیات نداشت ولی از جبر بدش نمیآمد. در بهار سال 1949، بکوس 25 ساله که تنها چند ماه تا اخذ لیسانس ریاضی فاصله داشت، هنوز برنامه خاصی برای زندگی آیندهاش نداشت. در آن روزها یکبار بازدیدی از مرکز رایانه شرکت آیبیام داشت و از نزدیک با ماشین حساب الکترونیکی SSEC که یکی از نخستین ماشینهای الکترونیکی آیبیام(با لامپ خلاء) بود آشنا شد. این ماشین اطلاق بزرگی را اشغال کرده بود و انباشته از سیمها و لامپهای خلاء بود. ناگهان فکری به سرش زد و به راهنمای تور گفت که به دنبال کار میگردد. او به بکوس گفت که باید با مدیر قسمت صحبت کند. او ابتدا امتناع کرد زیرا سر و وضع مناسبی نداشت ولی با اصرار راهنمای تور به دیدار مدیر مربوط رفت و سپس در آزمونی شرکت کرد. نتیجه آزمون رضایتبخش بود و او به استخدام آیبیام در آمد تا بر روی SSEC کار کند. SSEC یک رایانه به مفهوم امروزی نبود. حافظهای برای ذخیره نرمافزار نداشت و برنامهها را باید از طریق نوار منگنه کاغذی به آن میخوراندند. همچنین به دلیل به کار رفتن هزاران مولفه الکترومکانیکی، این ماشین قابلیت اطمینان پائینی داشت.
«کار کرد با SSEC جالب بود. همه چیز در اختیار خود آدم بود. باید بالاسر آن حاضر میبودیم زیرا هر دو سه دقیقه یکبار از کار میافتاد و باید میدانستیم که چگونه آن را دوباره به راه اندازیم.»
او 3 سال با SSEC کار میکرد و در خلال این مدت چیزهای زیادی آموخت. برنامهسازی هنوز در مراحل اولیهاش قرار داشت و بکوس نیز نخستین تجربیاتش را در زمینه محاسبات علمی کسب کرد.
فرترن: نخستین زبان برنامهسازی سطح بالا
در دسامبر 1953، بکوس یادداشتی برای رئیسش در آیبیام، گوتبرت هرد، نوشت و پیشنهاد کرد که یک زبان برنامهسازی برای ماشین آیبیام 704 طراحی شود. این پروژه به نام Formula Translation یا به اختصار Fortran معروف شد. هدف آن خیلی روشن بود. بکوس میگوید:
«منظور من فقط به دست آوردن ابزاری بود که برنامهسازی با آن بسیار سریعتر انجام گیرد. اصلاً در فکر این نبودم که این ابزار ممکن است در ماشینهای دیگر هم مورد استفاده قرار گیرد. البته ماشینهای دیگر هم در آن زمان به ندرت یافت میشد.»
سرانجام هرد پروژه را تصویب کرد. بکوس تعدادی برنامهساز با تجربه و چند ریاضیدان جوان تازه فارغالتحصیل شده استخدام کرد. در پائیز 1954 تیم برنامهسازی و تحقیقاتی او هدف روشنی پیش رو داشت: تولید زبانی که برنامهسازی را برای ماشین آیبیام 704 سادهتر کند.آنها بزودی دریافتند که طراحی زبان، بخش ساده کار است و چالش اصلی، ترجمه آن به زبان قابل درک برای ماشین است. یعنی برنامهای که امروزه مترجم (کامپایلر) خوانده میشود. بکوس و تیم او الگوریتمهایی را که این روزها هر دانشجوی دوره کارشناسی میتواند به کمک آنها در طول یک ترم به طراحی و پیادهسازی یک کامپایلر جدید بپردازد در دست نداشتند. مخصوصاً روش خوبی برای طراحی قلب کامپایلر که تجزیه گر خوانده میشود به نظرشان نمیرسید.
طراحان فرترن میدانستند که برنامهسازان از زبان سطح بالای آنان چنانچه زبان ماشینی که تولید میکند از برنامهای که خود برنامهساز به زبان ماشین بنویسد، کارآیی کمتری داشته باشد استفاده نخواهند کرد. به این دلیل تقریباً نیمی از کار آنان صرف تولید یک کد ماشین کارآمد شد. به همین دلیل است که فرترن همواره به خاطر کارآیی خویش زبانزد میباشد.
آیبیام 704 تنها در حدود 80 کاربر داشت، از جمله جنرال الکتریک، یونایتد ایرکرافت، لاکهید و برخی دیگر از صنایع هوایی. شرکت وستینگهاوس نخستین کاربر تجاری فرترن بود که در اپریل 1957، یک بسته کارتهای منگنه حاوی کامپایلر زبان را از طرف تیم بکوس دریافت کرد.
بکوس در این باره میگوید:
«آنها بسته کارتها را بدون هیچگونه دستورالعمل اضافی دریافت داشتند. تنها چیزی که به آنها گفته شد این بود که باید آن را اجرا کنند. کار آنها محاسبه فشار باد در طراحی بال هواپیما و چیزهای هیدرودینامیکی دیگر از این قبیل بود. پیش از این، این محاسبات را به کمک ماشین حساب و تونلهای باد انجام میدادند.»
اولین نرمافزارکابردی که به زبان فرترن نوشته شد با موفقیت اجرا گردید ولی دانشمندان وستینگهاوس بزودی تعداد زیادی خطا در کامپایلر فرترن پیدا کردند. تیم بکوس ظرف 6 ماه خطاهای گزارش شده را تصحیح کردند.
زبان فرترن هنوز پس از گذشت بیش از 40 سال یکی از زبانهای مطرح در زمینه کاربردهای علمی است. بهترین شاهد این مدعا هم ان است که فرترن هنوز در حال تکامل میباشد. به عنوان مثال، در سال 1992، یک کمیته استاندارد بینالمللی، ویژگی تازهای را به این زبان افزود که به موجب آن برنامهسازان میتوانند به کامپایلر بگویند که چند رایانه مشترکاً یک حلقه DO را اجرا میکنند.
بکوس در اواخر دهه 1950 کار بر روی زبان فرترن را متوقف کرد. هر چند کار اصلی او در زمینه زبانهای برنامهسازی تازه آغاز شده بود.
در ماه می سال 1958، یک کمیته بینالمللی متشکل از دانشمندانی از بخشهای تجاری و دانشگاهی در زوریخ تشکیل شد. هدف آنها، توسعه زبان فرترن و دستیابی به یک زبان واحد و استاندارد برای برنامهسازی بود. این زبان بعداً به نام الگول معروف شد.
نارضایتی از اختراع خود!
بکوس یکی از نخستین و محبوبترین زبانهای برنامهسازی را اختراع کرده بود و همچنین مجموعه علائمی ارائه نموده بود که به کمک آن، تعریف صدها زبان برنامهسازی دیگر نیز امکانپذیر میشد. بسیاری از افراد، حتی دانشمندان بزرگ نیز از چنین دستاوردهای با ارزشی ارضا میشوند ولی بکوس اینگونه نبود. او کاری که کرده بود را زیاد دوست نداشت. او میگوید:
«شما وقتی به یک برنامه فرترن نگاه میکنید به سادگی نمیتوانید سردرآورید که آن برنامه چکار میکند. دو عدد را میگیرد، آنها را در هم ضرب میکند، سپس در جایی ذخیره میکند، بعد این آزمایش را میکند، سپس فلان کار را میکند و ... به این ترتیب سر در آوردن از اینکه بالاخره این برنامه چکار میکند واقعاً دشوار است.»
هدف بکوس این بود که برنامهسازان را قادر سازد که مشخص کنند چه کاری میخواهد انجام گیرد، بدون آنکه درگیر چگونه انجام شدن آن گردند. بکوس این ایده را به هنگام دریافت جایزه تورینگ در سال 1977 بیان داشت.
عنوان سخنرانی او چنین بود: «آیا میتوان برنامهسازی را از سبک فن نویمان آزاد ساخت؟» البته اشاره او به فن نویمان، ارتباطی به مخالفت قبلی این ریاضیدان برجسته با تولید زبان فرترن نداشت بلکه برعکس، بکوس به نحوه در نظر گرفتن رایانهها از سوی فن نویمان به عنوان پردازندههای متصل به حافظههای شامل برنامهها و دادهها، اشاره داشت. به عقیده بکوس، این نحوه در نظر گرفتن رایانه به طور ضمنی، فرآیند چرخشی زیر را القاء میکند: گرفتن دادهها از حافظه، انجام عملیات روی آنها، و برگرداندن نتیجه به حافظه. به اعتقاد وی، زبانهای برنامهسازی به خاطر پیروی از این الگو، وضوح و روشنی را از دست میدهند. به عنوان راهحلی برای این مشکل، بکوس با اقتباس از کارهای مککارتی در زمینه زبان لیسپ (که بیشتر در کاربردهای هوش مصنوعی به کار میرود) و کنت ایورسون در زمینه زبان APL، زبان FP را عرضه کرد. هدف اصلی، ساختن برنامه مستقیماً از روی توابع ریاضی بود.
تفاوت اصلی بین زبانهای عادی (فن نویمانی) و زبانهای تابعی مانند FP این است که زبانهای عادی صریحاً محتویات حافظه را تغییر میدهند ولی زبانهای تابعی به ترکیب تابع اتکا دارند. برای روشنتر شدن موضوع، مساله حاصلضرب درونی دو آرایه را در نظر بگیرید. در یک زبان استاندارد فن نویمانی این عمل کم و بیش به شکل زیر نوشته میشود:
بکوس انتقادات زیادی به این شیوه برنامهسازی داشت که 2 مورد عمده آن چنین بود: محتوی C به طور مرتب تغییر میکند، بنابراین تنها راه درک برنامه، فهمیدن این نکته است که در هر بار تغییر، یک حاصلضرب جدید به مجموع قبلی افزوده گردد. بنابراین، فرد باید به منظور درک برنامه، بتواند به طور ذهنی کد برنامه را اجرا کند. و دوم آنکه در برنامه به پارامترها (بردارها (a و b) و طول آنها (n)) نام داده شده است و برای کار با بردارها به طور کلی، باید این پارامترها به عنوان پارامتر مرجع فرستاده شوند. ولی در FP مساله حاصلضرب درونی دو آرایه را میتوان به شکل زیر تعریف کرد:
Def Inner Product = (insert + )(Apply To All)(Transpose)
به گفته بکوس، این شکل 3 مزیت اساسی دارد. اول آن که هیچ وضعیت پنهانی وجود ندارد (مثل متغییر C در برنامه فوق). دوم آنکه برای هر دو بردار هم طولی کار می کند زیرا پارامترها را نامگذاری نمیکند (بنابراین مساله انتقال پارامتر را از میان بر میدارد) و سوم آنکه علائمی برای عملیات تکراری وجود ندارد.
هر مرحله دقیقاً یکبار بر روی نتیجه مرحله قبل اعمال میشود (این فرایند «ترکیب» خوانده میشود).
زبانهای تابعی به دو دلیل خیلی مورد توجه قرار نگرفتند. نخست آن که ترجمه کارآمد برنامههای نوشته شده به این گونه زبانها بسیار دشوار است و دیگر اینکه زبانهای تابعی برای برخی از انواع کاربردها مناسب نیستند، خصوصاً کاربردهایی که شامل گرفتن دادهها، بهنگام رسانی آنها و باز گرداندن آنها به پایگاه دادههاست. کاربردهایی مانند بهنگام رسانی موجودی حساب بانکی، ذاتاً با الگوی فن نویمانی همخوانی دارند.
بکوس در سال 1991 بازنشسته شد و از دنیای علوم کامپیوتر و حتی علوم کناره گرفت. از آن تاریخ دانشمندان دیگر کار بر روی زبانهای تابعی و حل مشکل آنها را ادامه دادهاند. او خود به دروننگری و مکاشفه پرداخته است و میگوید:
«اغلب دانشمندان به این دلیل دانشمند شدهاند که از مواجهه با زندگی میهراسیدهاند. آنها در کنج آزمایشگاهها یا کتابخانهها از خلاقیت علمی خود لذت بردهاند بیآنکه با مردم مواجه شوند و مشکلات ناشی از ارتباط با دیگران را تجربه کنند و راه خود در زندگی را هموار کنند. دنیای خود ساخته آنها بسیار جالب است. دنیای پر از امکانات ارضاءکننده و شادیبخش و خالی از رنج و ناراحتی. ناراحتی و مشکلات حل یک مساله در مقایسه با ناراحتیهایی که افراد عادی در زندگی با آنها مواجهه میشوند بسیار ناچیز است.
مکاشفه و دروننگری یک فعالیت علمی نیست: تکرار شدنی نیست و نظریههای دقیقی در مورد چگونگی انجام آن و آنچه انتظار دستیابی به آن را دارید وجود ندارد. انسان با تعمق و نگاه به درون خود، واقعاً از عظمت عالم خلقت شگفتزده میشود. احساسی که هیچگاه با یافتن قوانین فیزیکی به آدم دست نمیدهد.»
جان بکوس در سال 1924 در فیلادلفیا متولد شد. دوران تحصیلات ابتدائی و متوسطه را در پنسیلوانیا گذراند. او شاگرد تنبلی بود و از خواندن کتابهای درسی نفرت داشت. بالاخره با زحمت زیاد در سال 1942 مدرسه را تمام کرد و وارد دانشگاه ویرجینیا شد. پدرش میخواست که او شیمیدان شود. او دروس نظری را دوست داشت ولی از آزمایشگاه بدش میآمد. او تنبلیهای قبلی را در دانشگاه ادامه داد. بعد از دو ترم او تنها یک واحد را گذرانده و آنهم واحد موسیقی بود! سرانجام مسوولان دانشکده عذرش را خواستند و او در سال 1943 به ارتش پیوست.
در آنجا در یک آزمون استعدادسنجی شرکت کرد و نتیجه این آزمون، جانش را نجات داد؛ دوستانش به جبهههای جنگ فرستاده شدند و او به کالج هاورفورد برای آموزش پزشکی. اما درآنجا نیز 9 ماه بیشتر دوام نیاورد.
پس از خروج از دانشکده پزشکی، آپارتمان کوچکی در نیویورک به قیمت ماهانه 18 دلار اجاره کرد. او درباره آن روزها میگوید:
«واقعاً نمیدانستم از زندگی چه میخواهم. تصمیم گرفتم یک دستگاه صوتی خوب خریداری کنم زیرا خیلی به موسیقی علاقه داشتم. در آن روزها دستگاه خوب وجود نداشت بنابراین به یک مدرسه فنی رفتم تا درست کردن دستگاههای صوتی را یاد بگیرم. در آنجا معلم بسیار خوبی داشتم نخستین معلم خوبی بود که دیده بودم . او از من خواست که با او همکاری کنم و مشخصات بعضی از مدارها را محاسبه کنم. به یاد دارم که محاسبات ساده ولی بسیار وقتگیر و خستهکنندهای بود ولی مرا به ریاضیات علاقهمند ساخت. کاربردی بودن آن برایم خیلی جالب بود.»
بکوس در دانشکده علوم دانشگاه کلمبیا ثبت نام کرد تا با درسهای ریاضی بیشتر آشنا شود. او علاقهای به ریاضیات نداشت ولی از جبر بدش نمیآمد. در بهار سال 1949، بکوس 25 ساله که تنها چند ماه تا اخذ لیسانس ریاضی فاصله داشت، هنوز برنامه خاصی برای زندگی آیندهاش نداشت. در آن روزها یکبار بازدیدی از مرکز رایانه شرکت آیبیام داشت و از نزدیک با ماشین حساب الکترونیکی SSEC که یکی از نخستین ماشینهای الکترونیکی آیبیام(با لامپ خلاء) بود آشنا شد. این ماشین اطلاق بزرگی را اشغال کرده بود و انباشته از سیمها و لامپهای خلاء بود. ناگهان فکری به سرش زد و به راهنمای تور گفت که به دنبال کار میگردد. او به بکوس گفت که باید با مدیر قسمت صحبت کند. او ابتدا امتناع کرد زیرا سر و وضع مناسبی نداشت ولی با اصرار راهنمای تور به دیدار مدیر مربوط رفت و سپس در آزمونی شرکت کرد. نتیجه آزمون رضایتبخش بود و او به استخدام آیبیام در آمد تا بر روی SSEC کار کند. SSEC یک رایانه به مفهوم امروزی نبود. حافظهای برای ذخیره نرمافزار نداشت و برنامهها را باید از طریق نوار منگنه کاغذی به آن میخوراندند. همچنین به دلیل به کار رفتن هزاران مولفه الکترومکانیکی، این ماشین قابلیت اطمینان پائینی داشت.
«کار کرد با SSEC جالب بود. همه چیز در اختیار خود آدم بود. باید بالاسر آن حاضر میبودیم زیرا هر دو سه دقیقه یکبار از کار میافتاد و باید میدانستیم که چگونه آن را دوباره به راه اندازیم.»
او 3 سال با SSEC کار میکرد و در خلال این مدت چیزهای زیادی آموخت. برنامهسازی هنوز در مراحل اولیهاش قرار داشت و بکوس نیز نخستین تجربیاتش را در زمینه محاسبات علمی کسب کرد.
فرترن: نخستین زبان برنامهسازی سطح بالا
در دسامبر 1953، بکوس یادداشتی برای رئیسش در آیبیام، گوتبرت هرد، نوشت و پیشنهاد کرد که یک زبان برنامهسازی برای ماشین آیبیام 704 طراحی شود. این پروژه به نام Formula Translation یا به اختصار Fortran معروف شد. هدف آن خیلی روشن بود. بکوس میگوید:
«منظور من فقط به دست آوردن ابزاری بود که برنامهسازی با آن بسیار سریعتر انجام گیرد. اصلاً در فکر این نبودم که این ابزار ممکن است در ماشینهای دیگر هم مورد استفاده قرار گیرد. البته ماشینهای دیگر هم در آن زمان به ندرت یافت میشد.»
سرانجام هرد پروژه را تصویب کرد. بکوس تعدادی برنامهساز با تجربه و چند ریاضیدان جوان تازه فارغالتحصیل شده استخدام کرد. در پائیز 1954 تیم برنامهسازی و تحقیقاتی او هدف روشنی پیش رو داشت: تولید زبانی که برنامهسازی را برای ماشین آیبیام 704 سادهتر کند.آنها بزودی دریافتند که طراحی زبان، بخش ساده کار است و چالش اصلی، ترجمه آن به زبان قابل درک برای ماشین است. یعنی برنامهای که امروزه مترجم (کامپایلر) خوانده میشود. بکوس و تیم او الگوریتمهایی را که این روزها هر دانشجوی دوره کارشناسی میتواند به کمک آنها در طول یک ترم به طراحی و پیادهسازی یک کامپایلر جدید بپردازد در دست نداشتند. مخصوصاً روش خوبی برای طراحی قلب کامپایلر که تجزیه گر خوانده میشود به نظرشان نمیرسید.
طراحان فرترن میدانستند که برنامهسازان از زبان سطح بالای آنان چنانچه زبان ماشینی که تولید میکند از برنامهای که خود برنامهساز به زبان ماشین بنویسد، کارآیی کمتری داشته باشد استفاده نخواهند کرد. به این دلیل تقریباً نیمی از کار آنان صرف تولید یک کد ماشین کارآمد شد. به همین دلیل است که فرترن همواره به خاطر کارآیی خویش زبانزد میباشد.
آیبیام 704 تنها در حدود 80 کاربر داشت، از جمله جنرال الکتریک، یونایتد ایرکرافت، لاکهید و برخی دیگر از صنایع هوایی. شرکت وستینگهاوس نخستین کاربر تجاری فرترن بود که در اپریل 1957، یک بسته کارتهای منگنه حاوی کامپایلر زبان را از طرف تیم بکوس دریافت کرد.
بکوس در این باره میگوید:
«آنها بسته کارتها را بدون هیچگونه دستورالعمل اضافی دریافت داشتند. تنها چیزی که به آنها گفته شد این بود که باید آن را اجرا کنند. کار آنها محاسبه فشار باد در طراحی بال هواپیما و چیزهای هیدرودینامیکی دیگر از این قبیل بود. پیش از این، این محاسبات را به کمک ماشین حساب و تونلهای باد انجام میدادند.»
اولین نرمافزارکابردی که به زبان فرترن نوشته شد با موفقیت اجرا گردید ولی دانشمندان وستینگهاوس بزودی تعداد زیادی خطا در کامپایلر فرترن پیدا کردند. تیم بکوس ظرف 6 ماه خطاهای گزارش شده را تصحیح کردند.
زبان فرترن هنوز پس از گذشت بیش از 40 سال یکی از زبانهای مطرح در زمینه کاربردهای علمی است. بهترین شاهد این مدعا هم ان است که فرترن هنوز در حال تکامل میباشد. به عنوان مثال، در سال 1992، یک کمیته استاندارد بینالمللی، ویژگی تازهای را به این زبان افزود که به موجب آن برنامهسازان میتوانند به کامپایلر بگویند که چند رایانه مشترکاً یک حلقه DO را اجرا میکنند.
بکوس در اواخر دهه 1950 کار بر روی زبان فرترن را متوقف کرد. هر چند کار اصلی او در زمینه زبانهای برنامهسازی تازه آغاز شده بود.
در ماه می سال 1958، یک کمیته بینالمللی متشکل از دانشمندانی از بخشهای تجاری و دانشگاهی در زوریخ تشکیل شد. هدف آنها، توسعه زبان فرترن و دستیابی به یک زبان واحد و استاندارد برای برنامهسازی بود. این زبان بعداً به نام الگول معروف شد.
نارضایتی از اختراع خود!
بکوس یکی از نخستین و محبوبترین زبانهای برنامهسازی را اختراع کرده بود و همچنین مجموعه علائمی ارائه نموده بود که به کمک آن، تعریف صدها زبان برنامهسازی دیگر نیز امکانپذیر میشد. بسیاری از افراد، حتی دانشمندان بزرگ نیز از چنین دستاوردهای با ارزشی ارضا میشوند ولی بکوس اینگونه نبود. او کاری که کرده بود را زیاد دوست نداشت. او میگوید:
«شما وقتی به یک برنامه فرترن نگاه میکنید به سادگی نمیتوانید سردرآورید که آن برنامه چکار میکند. دو عدد را میگیرد، آنها را در هم ضرب میکند، سپس در جایی ذخیره میکند، بعد این آزمایش را میکند، سپس فلان کار را میکند و ... به این ترتیب سر در آوردن از اینکه بالاخره این برنامه چکار میکند واقعاً دشوار است.»
هدف بکوس این بود که برنامهسازان را قادر سازد که مشخص کنند چه کاری میخواهد انجام گیرد، بدون آنکه درگیر چگونه انجام شدن آن گردند. بکوس این ایده را به هنگام دریافت جایزه تورینگ در سال 1977 بیان داشت.
عنوان سخنرانی او چنین بود: «آیا میتوان برنامهسازی را از سبک فن نویمان آزاد ساخت؟» البته اشاره او به فن نویمان، ارتباطی به مخالفت قبلی این ریاضیدان برجسته با تولید زبان فرترن نداشت بلکه برعکس، بکوس به نحوه در نظر گرفتن رایانهها از سوی فن نویمان به عنوان پردازندههای متصل به حافظههای شامل برنامهها و دادهها، اشاره داشت. به عقیده بکوس، این نحوه در نظر گرفتن رایانه به طور ضمنی، فرآیند چرخشی زیر را القاء میکند: گرفتن دادهها از حافظه، انجام عملیات روی آنها، و برگرداندن نتیجه به حافظه. به اعتقاد وی، زبانهای برنامهسازی به خاطر پیروی از این الگو، وضوح و روشنی را از دست میدهند. به عنوان راهحلی برای این مشکل، بکوس با اقتباس از کارهای مککارتی در زمینه زبان لیسپ (که بیشتر در کاربردهای هوش مصنوعی به کار میرود) و کنت ایورسون در زمینه زبان APL، زبان FP را عرضه کرد. هدف اصلی، ساختن برنامه مستقیماً از روی توابع ریاضی بود.
تفاوت اصلی بین زبانهای عادی (فن نویمانی) و زبانهای تابعی مانند FP این است که زبانهای عادی صریحاً محتویات حافظه را تغییر میدهند ولی زبانهای تابعی به ترکیب تابع اتکا دارند. برای روشنتر شدن موضوع، مساله حاصلضرب درونی دو آرایه را در نظر بگیرید. در یک زبان استاندارد فن نویمانی این عمل کم و بیش به شکل زیر نوشته میشود:
بکوس انتقادات زیادی به این شیوه برنامهسازی داشت که 2 مورد عمده آن چنین بود: محتوی C به طور مرتب تغییر میکند، بنابراین تنها راه درک برنامه، فهمیدن این نکته است که در هر بار تغییر، یک حاصلضرب جدید به مجموع قبلی افزوده گردد. بنابراین، فرد باید به منظور درک برنامه، بتواند به طور ذهنی کد برنامه را اجرا کند. و دوم آنکه در برنامه به پارامترها (بردارها (a و b) و طول آنها (n)) نام داده شده است و برای کار با بردارها به طور کلی، باید این پارامترها به عنوان پارامتر مرجع فرستاده شوند. ولی در FP مساله حاصلضرب درونی دو آرایه را میتوان به شکل زیر تعریف کرد:
Def Inner Product = (insert + )(Apply To All)(Transpose)
به گفته بکوس، این شکل 3 مزیت اساسی دارد. اول آن که هیچ وضعیت پنهانی وجود ندارد (مثل متغییر C در برنامه فوق). دوم آنکه برای هر دو بردار هم طولی کار می کند زیرا پارامترها را نامگذاری نمیکند (بنابراین مساله انتقال پارامتر را از میان بر میدارد) و سوم آنکه علائمی برای عملیات تکراری وجود ندارد.
هر مرحله دقیقاً یکبار بر روی نتیجه مرحله قبل اعمال میشود (این فرایند «ترکیب» خوانده میشود).
زبانهای تابعی به دو دلیل خیلی مورد توجه قرار نگرفتند. نخست آن که ترجمه کارآمد برنامههای نوشته شده به این گونه زبانها بسیار دشوار است و دیگر اینکه زبانهای تابعی برای برخی از انواع کاربردها مناسب نیستند، خصوصاً کاربردهایی که شامل گرفتن دادهها، بهنگام رسانی آنها و باز گرداندن آنها به پایگاه دادههاست. کاربردهایی مانند بهنگام رسانی موجودی حساب بانکی، ذاتاً با الگوی فن نویمانی همخوانی دارند.
بکوس در سال 1991 بازنشسته شد و از دنیای علوم کامپیوتر و حتی علوم کناره گرفت. از آن تاریخ دانشمندان دیگر کار بر روی زبانهای تابعی و حل مشکل آنها را ادامه دادهاند. او خود به دروننگری و مکاشفه پرداخته است و میگوید:
«اغلب دانشمندان به این دلیل دانشمند شدهاند که از مواجهه با زندگی میهراسیدهاند. آنها در کنج آزمایشگاهها یا کتابخانهها از خلاقیت علمی خود لذت بردهاند بیآنکه با مردم مواجه شوند و مشکلات ناشی از ارتباط با دیگران را تجربه کنند و راه خود در زندگی را هموار کنند. دنیای خود ساخته آنها بسیار جالب است. دنیای پر از امکانات ارضاءکننده و شادیبخش و خالی از رنج و ناراحتی. ناراحتی و مشکلات حل یک مساله در مقایسه با ناراحتیهایی که افراد عادی در زندگی با آنها مواجهه میشوند بسیار ناچیز است.
مکاشفه و دروننگری یک فعالیت علمی نیست: تکرار شدنی نیست و نظریههای دقیقی در مورد چگونگی انجام آن و آنچه انتظار دستیابی به آن را دارید وجود ندارد. انسان با تعمق و نگاه به درون خود، واقعاً از عظمت عالم خلقت شگفتزده میشود. احساسی که هیچگاه با یافتن قوانین فیزیکی به آدم دست نمیدهد.»