بیوگرافی کن تامسون، خالق سیستمعامل یونیکس و زبان برنامهنویسی B
کن تامسون (با نام کامل کنت لین تامسون - Kenneth Lane Thompson) یکی از پیشگامان دنیای کامپیوتر است. او برنامهنویسی آمریکایی است که سابقهی کار در شرکت مشهور آزمایشگاههای بل (Bell Labs) را دارد. جایی که چند دستاورد مهم زندگیاش یعنی سیستمعامل یونیکس و زبان برنامهنویسی B در آن شکل گرفت. زبان برنامهنویسی B بعدا به زبان جامع و پرطرفدار C تبدیل شد. تامسون در محافل برنامهنویسها و هکرها به نام کن شناخته میشود.
تامسون دستاوردهای مهم دیگری نیز در زندگی کاری خود داشته است. او یکی از توسعه دهندگان اولیهی سیستمعامل Plan 9 بوده است. او از سال ۲۰۰۶ در گوگل استخدام شد و در توسعهی زبان برنامهنویسی اختصاصی این شرکت یعنی Go همکاری کرد.
از دیگر فعالیتهای تامسون در دنیای کامپیوتر و برنامهنویسی میتوان به همکاری در توسعهی سیستم عبارتهای باقاعده (regex) و ویرایشگرهای متنی QED و ed اشاره کرد. او در توسعهی انکودینگ مشهور UTF-8 نیز نقش داشته است. او در بل لبز در توسعهی یک دیتابیس کامپیوتری برای پیشبینی پایان بازی شطرنج و همچنین اولین شطرنج کامپیوتری با نام Belle نیز همکاری داشته است.
کن تامسون در کنار همکار همیشگیاش دنیس ریچی
تولد و تحصیل
کن تامسون متولد ۱۵ بهمن سال ۱۳۲۱ (۴ فوریهی سال ۱۹۴۳) در شهر نیواورلئان است. او از همان کودکی علاقهی شدیدی به ریاضیات و الگوریتمها داشته است. کن تعریف میکند که در دوران تحصیل حتی مسائل معمولی ریاضیات را نیز به کمک معادلات باینری حل میکرده است.
تامسون، فارغالتحصیل علوم کامپیوتر از دانشگاه یوسی برکلی است
تامسون برای ادامهی تحصیل در مقطع دانشگاهی به دانشگاه کالیفرنیا رفته و مدرک کارشناسی و کارشناسی ارشد خود را در رشتهی مهندسی برق و علوم کامپیوتر در سالهای ۱۳۴۴ و ۱۳۴۵ (۱۹۶۵ و ۱۹۶۶) از این دانشگاه دریافت کرده است. استاد راهنمای تامسون در مقطع کارشناسی ارشد، الوین برلیکمپ (Elwyn Berlekamp)، دانشمند مشهور دنیای کامپیوتر و برندهی جایزهی ریچارد همینگ بود. برلیکمپ در توسعهی نظریهی کدگذاری و همچنین بازیهای ترکیباتی، نامی شناخته شده است.
فعالیت کاری در بل لبز
تامسون بلافاصله پس از تحصیل در سال ۱۳۴۵ (۱۹۶۶) توسط بل لبز استخدام شد. او در آنجا با نابغهای دیگر به نام دنیس ریچی همکار شد که پروژهی مشترکی با نام سیستمعامل Multics را با هم انجام دادند. مولتیکس را میتوان منبع الهام بسیاری از سیستمعاملهای کنونی دانست. تامسون در جریان توسعهی این سیستمعامل، یک زبان برنامهنویسی به نام Bon و همچنین یک بازی بهنام Space Travel نیز طراحی کرد.
تامسون و ریچی در بل لبز
بازی سفر به فضا به این صورت بود که فضانورد درون یک شبیهسازی از منظومهی شمسی پرواز میکرد. بازیکن میتوانست سفینهی خود را پس از گشت و گذار در این فضای مجازی و ساده، روی هر سیارهی دلخواه، فرود بیاورد. جالب است بدانید این بازی ساده، بیش از هر بازی دیگر، نقشی سازنده در تاریخ صنعت کامپیوتر داشته است.
بل لبز پس از مدتی از پروژهی مولتیکس خارج شد. تامسون برای انجام بازی «سفر به فضا» نیاز به یک کامپیوتر داشت. او یک ماشین قدیمی مدل PDP-7 پیدا کرد و بازی خود را دوباره برای این ماشین، توسعه داد. بههرحال، سفر به فضا نهتنها لقب اولین بازی کامپیوتری و یکی از اولین برنامههای کاربردی سیستمعامل یونیکس را یدک میکشد، بلکه ابزاری برای آشنایی هرچه بیشتر تامسون با فرآیند آمادهسازی نرمافزارها برای سیستمعاملها بوده است.
کامپیوتر PDP-7
پس از آشنایی با این ماشین، تیمی از محققان بل لبز به رهبری او و ریچی یک سیستمفایل ساختارمند را توسعه دادند. از دستاوردهای دیگر آنها با این ماشین، طراحی مفهوم فرآیند کامپیوتری، فایلهای دستگاهی و یک مترجم خط فرمان بود. در نهایت، یکی از اعضای این تیم یعنی برایان کرنیگان نام یونیکس را برای ترکیب این ابزارها پیشنهاد داد که نمادی از مولتیکس را در خود داشت.
کامپیوتر PDP-7 که تامسون روی آن کار میکرد، حافظهای ۴ کیلوبایتی داشت. این ظرفیت پایین حافظه باعث شد تا او سیستمعامل خود را تا حد امکان کوچک و کمحجم توسعه دهد. در واقع، او تلاش میکرد تا حداکثر امکانات به سادهترین حالت در سیستمعامل گنجانده شوند. همین تلاشها، موفقیت یونیکس و انشعابات آن همچون لینوکس را رقم زد.
پس از کارهای اولیه روی این مجموعه ابزار یعنی همان یونیکس، تامسون تصمیم گرفت تا زبانی مخصوص به آن طراحی کند. در نتیجه، زبان برنامهنویسی B متولد شد. این زبان، زمینهها را برای توسعهی زبان C فراهم کرد. در واقع زبان B، تلاشی برای بهبود ایرادات زبان BCPL بود.
نمایی از ترمینال Unix 6
تامسون در دههی ۱۳۴۰ (۱۹۶۰) علاوه بر موارد گفته شده، روی عبارتهای باقاعده یا regex نیز کار کرد. این مفهوم، یک مفهوم نظری در علوم کامپیوتر است که در توسعهی فرآیندهای جستجوی عبارت و جایگزینی در ویرایشگرهای متنی به کار میرود. کار روی این مفهوم باعث شد تا تامسون نسخهای از ویرایشگر متنی QED را توسعه دهد.
ویرایشگر QED پایههای طراحی ویرایگشر ed را بنا کردند. این ویرایشگر بهعنوان ابزار اصلی متنی در سیستمعامل یونیکس استفاده شد. پیادهسازی مفهوم regex در این ویرایشگرها و پس از آن، گسترش محبوبیت سیستمعامل یونیکس، این مفهوم را در دنیای کامپیوتر بسیار محبوب و پرکاربرد کرد. در واقع میتوان گفت هر نرمافزاری که امروزه از این مفهوم استفاده میکند، نشانههایی از دستاوردهای ابتدایی تامسون را در خود دارد.
حافظهی کم PDP-7، تامسون را مجبور به طراحی سیستمعامل سبک کرد
از دیگر دستاوردهای تامسون در این زمان و در حین توسعهی ویرایشگرهای متنی، طراحی مفهومی بود که بعدا با نام الگوریتم ساختمان تامسون شناخته شد. این الگوریتم نیز با تبدیل regex به اتوماتون تعیینناپذیر متناهی (NFA)، عملیات جستجو و تطبیق عبارتهای متنی را آسان میکند.
تامسون در ادامهی فعالیت خود، همکاری بسیار نزدیکی با ریچی داشت. این دو، تمام وقت و انرژی خود را به یونیکس اختصاص داده بودند. تامسون در مصاحبهای در سال ۱۳۹۰ (۲۰۱۱) گفت که اولین نسخههای یونیکس بهتنهایی توسط او نوشته شدهاند و ریچی، بعدا به توسعهی آن کمک کرد:
من، بهتنهایی دو، تا سه نسخهی ابتدایی یونیکس را توسه دادم و سپس دنیس به آن علاقهمند شد. سپس، نوبت به بازنویسی آن با یک زبان سطح بالا رسید که بعدا به زبان C تبدیل شد. او بیشتر روی زبان و سیستم ورودی و خروجی کار میکرد و بقیهی کارهای سیستمعامل بر عهدهی من بود. ما این توسعهها را روی ماشین PDP-11 انجام میدادیم که در آن زمان بهخاطر گسترش در فضای آکادمیک، محبوبیت بالایی داشت.
مولتیکس، اولین همکاری جدی تامسون در توسعهی سیستمعامل
همانطور که تامسون اشاره کرده است، زبان C از مراحل بازنویسی و ویرایش سیستمعامل یونیکس زاده شد. در واقع این زبان، با اصلاح سیستمعامل، به زبانی کامل برای نوشتن سیستمها تبدیل شد. بازنویسی کرنل یونیکس با زبان C، موفقیتهای آتی این سیستمعامل را نیز رقم زد. این بازنویسی، یونیکس را به سیستمعاملی پرتابل تبدیل کرد. پرتابل شدن، استفاده از یونیکس را در هر پلتفرمی امکانپذیر کرد. این رخداد، پایانی بر دورانی طولانی بود که سیستمعاملها را به سختافزار مورد استفاده، محدود میکرد.
انتشار اولین اسناد و اطلاعات در مورد یونیکس، در سال ۱۳۵۲ (۱۹۷۳) توسط تامسون انجام شد. در واقع او در یک ارائه، این سیستمعامل را توضیح داد و پس از آن، گزارشی جامع در مورد این ارائه در یک ژورنال معتبر چاپ شد و همین روند، محبوبیت و شهرت یونیکس را دوچندان کرد.
دانشگاه یوسی برکلی و بل لبز را میتوان توسعهدهندگان اصلی یونیکس خواند
مدیران دانشگاه برکلی بهسرعت متوجه پتانسیلهای این سیستمعامل شدند و نسخهای از آن را سفارش دادند. تامسون در سال ۱۳۵۴ (۱۹۷۵) یک مرخصی طولانیمدت از بل لبز اخذ کرد و به دانشگاه محل تحصیلش یعنی یو سی برکلی رفت. او در آنجا در مراحل نصب سیستمعامل Version 6 Unix روی کامپیوترهای PDP-11/70 به دانشگاه کمک کرد. این سیستمعامل بعدا بهعنوان سیستمعامل اختصاصی دانشگاه توسعه یافت و با نام BSD شناخته شد. در واقع، پس از این اتفاق دانشگاه UCB نیز در کنار بل لبز به یکی از توسعهدهندگان یونیکس تبدیل شد.
همانطور که گفته شد، تامسون در توسعهی کامپیوتر شطرنجباز Belle نیز نقش داشته است. او با همکاری جوزف کاندان، نرمافزار و سختافزار این ماشین را توسعه داد. بهعلاوه، او برنامهای نوشت تا تمامی احتمالات پایان یک بازی شطرنج را تخمین بزند. البته این تخمینها برای فرضیههایی با ۴ و ۵ و ۶ مهره در پایان بازی توسعه یافتند که امروز با اصطلاح Endgame tablebase شناخته میشوند. در واقع این تخمینها و جداول حاصل، به نرمافزارهای کامپیوتری شطرنج کمک میکنند تا در موقع رخداد یک موقعیت خاص، بهترین تصمیم را برای حرکت بعدی خود بگیرند.
کن در حال کار روی پروژهی شطرنج کامپیوتری
توسعهی یونیکس
همکاری تامسون و ریچی در سالهای آینده هم ادامه پیدا کرد و آنها توسهی هرچه بهتر یونیکس را نقطهی تمرکز خود قرار دادند. نسخههای اولیهی این سیستمعامل که به نام Research Unix شناخته میشدند، موضوع اصلی فعالیتهای این دو دانشمند بودند و آنها از کدبیسهای BSD برای توسعهی نسخههای ۸ و ۹ و ۱۰ استفاده کردند.
کن تامسون: لینوکس ایراداتی دارد و آیندهی روشنی در اتظارش نیست
در میانههای دههی ۱۳۶۰ (۱۹۸۰)، بل لبز تصمیم گرفت تا جایگزینی برای سیستمعامل یونیکس طراحی کند. تامسون در این پروه نیز از افراد تأثیرگذار بود. محصول نهایی این پروژه، با نام Plan 9 عرضه شد که سیستمعاملی بر پایهی تجهیزات و امکانات یونیکس بود. این سیستمعامل تلاش میکرد تا ناتوانی یونیکس در انجام برخی کارها همچون رایانش توزیع شده را برطرف کند. بههرحال برخی از آخرین نرمافزارهای توسعهیافته در یونیکس مانند mk و rc نیز در این سیستمعامل استفاده شدند.
تامسون در توسعهی زبان برنامهنویسی ++C نیز نقش کوتاهی داشته و برخی از نسخههای ابتدایی آن را تست کرده است. او پس از مدتی بهخاطر مشکلات متعدد هماهنگی بین نسخههای این زبان، نوشتن برنامه با آن را کنار میگذارد. تامسون در مصاحبهای در سال ۱۳۸۸ (۲۰۰۹) در مورد ++C گفته است:
این زبان، کارهای زیادی انجام میدهد اما ایراد اصلی آن است که همهی آنها نیمهکاره انجام میشوند. درواقع، ++C مجموعهای بههمریخته از ایدهها است که هرکدام بهتنهایی خوب هستند.
تامسون و ریچی در حال دریافت نشان افتخار از بیل کلینتون
همکاری بزرگ بعدی تامسون، توسعهی یونیکد UTF-8 به کمک راب پاک بود. این یونیکد بعدا به ابزار اصلی این حوزه در دنیای وب تبدیل شد و بیش از نیمی از صفحات وب با آن نوشته میشوند. سیستمعامل بعدی که میزبان تامسون بود، Inferno نام داشت. این سیستمعامل تحقیقاتی، بر اساس یک ماشین مجازی توسعه یافته بود. اینفرنو زمینهای بود تا تامسون، ریچی و برخی محققان دیگر بل لبز در دههی ۱۳۷۰ (۱۹۹۰)، دوباره با هم همکاری کنند.
قرن ۲۱ و همکاری با گوگل
تامسون در سالهای پایانی دههی ۱۳۷۰ (۱۹۹۰) از بل لبز بازنشسته شده و در شرکت Entrisphere مشغول به کار شد. او تا سال ۱۳۸۵ (۲۰۰۶) در این شرکت مشغول بود تا این که گوگل، او را در سال ۱۳۸۶ استخدام کرد. تامسون یکی از توسعهدهندگان پروژهی گوگل در زمینهی زبانهای برنامهنویسی یعنی زبان Go است. او در مورد این همکاری میگوید:
من و پایک و گریسمر در این پروژه با هم همکاری کردیم و ابتدا، تمرکز اصلی روی تحقیقات بود. ما همگی از زبان ++C متنفر بودیم. تیم توسعه تمامی جزئیات زبان جدید را با ما سه نفر در میان میگذاشت و به همین دلیل، هیچ قابلیت اضافی و بیفایده به این زبان افزوده نشد.
تامسون در مصاحبههای مختلف، موفقیت یونیکس و توسعهی آن را روندی برای تغییر رویکرد از کامپیوترهای متمرکز و بزرگ، به سیستمهای توزیع شده و کوچک بیان میکند. او موفقیتهای خودش را نیز مرهون تفکر پایین به بالا میداند و معتقد است پرداختن به مشکلات و چالشها از نگاهی جزئی به کل سیستم، یافتن راهحلها را آسانتر میکند.
تامسون و نشان افتخار موسسهی ACM
نظر تامسون در مورد لینوکس
لینوکس را میتوان موفقترین انشعاب سیستمعامل یونیکس در دنیای امروز دانست. این موفقیت پس از ابداع توسط لینوس توروالدز و سالها توسعه با همکاری هزاران توسعهدهنده در سرتاسر جهان ایجاد شده است. امروز، لینوکس یکی از فرمانروایان حوزهی سیستمعامل در جهان است و کاربران امروزی، بیش از یونیکس، لینوکس را میشناسند.
تامسون بهعنوان توسعهدهندهی سیستمعامل یونیکس، در سال ۱۳۷۸ (۱۹۹۹) در مصاحبهای، نظری نهچندان مثبت در مورد لینوکس بیان کرده و آیندهی آن را نامعلوم عنوان کرد. او در پاسخ به سؤالی در مورد این سیستمعامل گفت:
لینوکس سیستمعاملی کاملا مقابل مایکروسافت است. در واقع این سیستم تلاش کرده تا مقابلهای با مایکروسافت (نه بیشتر و نه کمتر) باشد. من فکر نمیکنم این سیستمعامل در آینده موفق شود. من کدهای اصلی آن را دیدهام و موارد مثبت و منفی، هر دو در آن وجود دارند. افراد متعدد و ناشناسی در توسعهی آن همکاری کردهاند و کیفیت آن در بخشهای مختلف تفاوتهای عمدهای دارد.تجربهی من و برخی از دوستانم نشان میدهد که لینوکس غیرقابل اعتماد است. در واقع مایکروسافت غیرقابل اعتماد بوده و لینوکس از آن بدتر است. این سیستمعامل در فضایی خارج از کامپیوترهای شخصی ناپایدار است. اگر بخواهید آن را در فایروالها، گیتویها و سیستمهای امبدد استفاده کنید، قطعا راه درازی در پیش دارید.
تامسون در حال دریافت جایزهی ویژهی ژاپن در حوزهی اطلاعات و ارتباطات
جوایز و افتخارات
تامسون در سال ۱۳۵۹ (۱۹۸۰) بهخاطر فعالیت در توسعهی سیستمعامل یونیکس، از طرف آکادمی ملی مهندسی آمریکا بهعنوان برنامهنویس منتخب انتخاب شد. او و ریچی در سال ۱۳۶۲ (۱۹۸۳) بهطور مشترک جایزهی تورینگ را بهخاطر توسعهی سیستمعامل یونیکس و تدوین نظریهی کامل سیستمعامل، دریافت کردند. این دو نفر، در سال ۱۳۶۹ (۱۹۹۰) نیز جایزهی ریچارد همینگ را به همین خاطر از IEEE دریافت کردند.
تامسون یکی از تأثیرگذارترین بازیگران تاریخ دنیای فناوری است. نام او به همین خاطر در سال ۱۳۷۶ (۱۹۹۷) در موزهی تاریخ کامپیوتر ثبت شد. دلیل این ثبت نیز بار دیگر توسعهی یونیکس و همچنین زبان برنامهنویسی C بود. بیل کلینتون، رئیس جمهور وقت آمریکا، مدال ملی فناوری سال ۱۳۷۷ (۱۹۹۸) را به این برنامهنویس و همکار همیشگیاش ریچی اهدا کرد.
از دیگر جوایز دریافت شده توسط کن تامسون میتوان به اولین مدال تسوتمو کانای مؤسسه مهندسان برق و الکترونیک (IEEE) در سال ۱۳۷۸ (۱۹۹۹) و همچنین جایزهی ملی ژاپن در بخش اطلاعات و ارتباطات در سال ۱۳۹۰ (۲۰۱۱) اشاره کرد. هر دوی این جوایز نیز در کنار دنیس ریچی دریافت شدند.