۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

۹ سند فوق العاده ای که هر توسعه دهنده ای باید بخواند

تاریخچه توسعه نرم افزار سرشار از "Eureka!" لحظاتی که دنیا را غافلگیر کرد این مقالات یک قرن (تقریبا) نوآوری را تعریف می کنند که هنوز برنامه نویسی را شکل می دهد.

تاریخچه توسعه نرم افزار سرشار از “Eureka!” لحظاتی که دنیا را غافلگیر کرد این مقالات یک قرن (تقریبا) نوآوری را تعریف می کنند که هنوز برنامه نویسی را شکل می دهد.

لحظه‌هایی وجود دارد که آنچه را که ما فکر می‌کنیم در توسعه نرم‌افزار امکان‌پذیر است، گسترش می‌دهد، و بنابراین ساختار هر کاری را که به‌عنوان توسعه‌دهنده انجام می‌دهیم تغییر می‌دهد. برخی اسناد تاریخی مهم ترین تغییرات پارادایم در فناوری محاسبات را به تصویر می کشند و قیمتی ندارند. این مقاله به قرن گذشته (تقریباً) توسعه نرم افزار نگاه می کند که در مقالاتی که هر توسعه دهنده ای باید آنها را بخواند کدگذاری شده است.

۹ مقاله تعریف کننده در تاریخچه توسعه نرم افزار

  1. در مورد اعداد قابل محاسبه، با یک برنامه کاربردی برای Entscheidungsproblem
  2. اولین پیش نویس گزارش در مورد EDVAC
  3. مشخصات IBM Mathematical Formula Translating System، FORTRAN
  4. به بیانیه ای که مضر تلقی می شود بروید
  5. جهت های جدید در رمزنگاری
  6. مانیفست گنو
  7. سبک های معماری و طراحی معماری های نرم افزاری مبتنی بر شبکه
  8. بیت کوین: یک سیستم نقدی الکترونیکی همتا به همتا
  9. TensorFlow: سیستمی برای یادگیری ماشینی در مقیاس بزرگ

۱. آلن تورینگ: در مورد اعداد قابل محاسبه، با یک برنامه کاربردی برای Entscheidungsproblem (1936)

این کهن الگوی یک سند پارادایمیک است. نوشته تورینگ شخصیت ذهنی را دارد که روی کاغذ یک زمین نامشخص را کاوش می کند و نقاط عطفی را برای تهیه نقشه پیدا می کند. علاوه بر این، این نقشه خاص برای تقریبا صد سال به خوبی به ما خدمت کرده است.

مقاله تورینگ قابل خواندن است، با استعدادی تقریباً روایی – حداقل برای یک مقاله فنی. سوالات سختی در مورد اینکه چه چیزی یک عدد را قابل محاسبه می کند می پرسد و در برخی از ریاضیات پیچیده می پردازد. اما مدل کلی – از یک سری مربع بی حد و حصر روی یک نوار (نوار تورینگ) که می تواند “سر” (نشانگر) را به اطراف حرکت دهد – حتی امروز نیز شگفت انگیز است. تورینگ ماهیت کل دنیای ماشین‌های اطلاعاتی را که پس از آن دنبال شد، توصیف می‌کند.

ظرافت ایده ماشین تورینگ در توانایی آن در تبدیل ریاضی به محاسبات و محاسبات به ریاضی است. این یک مدل مفید برای توصیف پیچیدگی سیستم ها باقی می ماند.

در اعداد قابل محاسبه در بسیاری از سطوح، از جمله باید بخوانید به عنوان ادامه کار گودل در مورد ناقص بودن. تنها رونمایی از ایده نوار و ماشین آن را ارزشمند می کند.

Entscheidungsproblem؟

Entscheidungsproblem تورینگ، یا “مسئله تصمیم” پنجره جالبی به حوزه ای است که ریاضیات، منطق و علوم کامپیوتر با هم ملاقات می کنند. برای یک ورودی معین، یک روش جهانی برای استخراج حقیقت بله/خیر در مجموعه ای از بدیهیات معین می خواهد.

۲. جان فون نویمان: اولین پیش نویس گزارش در مورد EDVAC (1945)

پیشنهاد فون نیومن برای معماری EDVAC (کامپیوتر خودکار متغیر گسسته الکترونیکی) نوعی پیشرفت است که ممکن است شما را در ابتدا به این فکر بیاندازد که “از قبل واضح نبود؟”

آنچه واضح نبود این بود که حافظه رایانه می تواند داده ها و دستورالعمل ها را با هم ذخیره کند. به عبارت دیگر، حافظه می تواند اطلاعاتی را که قابل اجرا نیز هستند، در خود نگه دارد. فراتر از ایده اصلی، حس نویسنده ای است که آنچه را که برای ماشین ها در آن زمان ممکن بود تعریف می کند. این یک جهش بزرگ از بحث عمدتاً فلسفی-ریاضی تورینگ به بحث عملی فون نویمان در مورد اطلاعات است که “به صورت مغناطیسی بر روی نوار یا سیم فولادی تاثیر گذاشته شده است.”

فدرال‌رزروها به دنبال گواهی بر روی نرم‌افزار امن هستند

این کار دارای انواع تفکرات جالبی است، از جمله ایده هایی در مورد مدیریت خطا در محاسبات: “دستگاه ممکن است به طور خودکار شایع ترین نقص ها را تشخیص دهد، حضور و مکان آنها را با علائم قابل مشاهده بیرونی نشان دهد و سپس متوقف شود.” مقاله فون نیومن درست در دروازه کامپیوترهای مدرن قرار دارد و به روشی نیمه واقعی و نیمه گمانه‌زنی ماهیت دستگاه‌هایی را که امروزه استفاده می‌کنیم، توصیف می‌کند. به همین دلیل است که معماری عمومی رایانه ها هنوز به عنوان معماری فون نویمان شناخته می شود.

مقاله فون نیومن می پرسد شخصیت یک کامپیوتر عمومی اینگونه خواهد بود، زیرا “در مورد دستگاه فیزیکی و نیز ترتیبات حسابی و منطقی حاکم بر عملکرد آن اعمال می شود.” پاسخ فون نیومن طرح کلی کامپیوتر دیجیتال مدرن بود.

لوله های خلاء را برگردانید

جان فون نویمان همچنین روی پروژه منهتن کار کرد، نظریه بازی را پیشگام کرد و به مکانیک کوانتومی کمک کرد. او ذهن بسیار گسترده ای داشت. وقتی او می‌گوید: «معلوم است که یک دستگاه محاسباتی با سرعت بسیار بالا در حالت ایده‌آل باید دارای عناصر لوله خلاء باشد،» خیلی زود بخندید.

۳. John Backuss et al.: Specifications for the IBM Mathematical Formula Translating System, FORTRAN (1954)

اگرچه مشخصات FORTRAN به طور عمومی منتشر نشد، اما تأثیر زیادی بر طراحی زبان و نرم افزار به طور کلی داشت.

فرترن، که اکنون یکی از اجداد باستانی زبان‌های برنامه‌نویسی است، پیشرفتی در زبان‌های سطح بالاتر برای زمان خود بود. این اولین زبان واقعاً همه منظوره بود.

اهمیت FORTRAN زمانی مشخص می شود که به یاد بیاورید از زمانی که تورینگ در سال ۱۹۳۶ کامپیوتری را تصور می کرد، تنها ۲۸ سال می گذشت.

مشخصات FORTRAN حس بسیار خوبی از آن لحظه و به ایجاد الگویی که طراحان زبان از آن زمان اتخاذ کرده اند کمک کرد. این حس رو به رشد آنچه در آن زمان با سخت‌افزار و نرم‌افزار ممکن می‌شد را به تصویر می‌کشد.

۴. Edsger Dijkstra: Go to Statement Considered Harmful (1968)

علاوه بر اینکه مم «مضر در نظر گرفته شده» را به ما می دهد، مقاله ادزگر دایکسترا در سال ۱۹۶۸ نه تنها برتری حلقه ها و جریان های کنترل مشروط را بر بیانیه ای که دنبال کردن آن سخت است، شناسایی می کند، بلکه شیوه جدیدی از تفکر و صحبت را برانگیخته است. در مورد کیفیت کد.

کار دایکسترا به ما یک محیط کامل، نگرش نسبت به برنامه نویسی و روشی برای نگاه کردن به این رشته در یک و نیم صفحه به ما می دهد.

این را در نظر بگیرید:

در اینجا، ما نه تنها به ساختار نرم افزار در زمان نوشتن و اجرا، بلکه به شخصیت کار و نقش خود به عنوان انسان در آن فکر می کنیم. این به ما نگاهی اجمالی به فرهنگ مهندسی نرم افزار به عنوان یک تلاش پرشور می دهد. فرهنگی که زیربنای همه کارهایی است که امروزه در نرم افزار انجام می دهیم.

7 پلتفرم با کد پایین که هوش مصنوعی را در بر می گیرند

رساله کوتاه دایکسترا همچنین به ایجاد نسل زبان های درجه بالاتر، ما را یک قدم به زبان های برنامه نویسی که امروزه استفاده می کنیم نزدیک تر می کند.

۵. Diffie-Hellman: New Directions in Cryptography (1976)

مقاله Diffie-Hellman، توسط ویتفیلد دیفی و مارتین ای. هلمن، از سه طریق قابل توجه است:

  • این پیشنهاد در ابتدا غیرممکن به نظر می رسد.
  • راه حل ظریف و قابل درک است.
  • مسیر تاریخ را تغییر داد.

اگر از قبل می‌دانید چگونه تبادل کلید Diffie–Hellman کار می‌کند، می‌دانید چرا این مقاله در لیست ما قرار دارد. کشف و اختراع رمزگذاری کلید عمومی/نامتقارن زمینه را برای همه ارتباطات ایمن در اینترنت (مانند HTTPS) فراهم کرد و ۳۲ سال بعد پایه ای برای کاغذ سفید بیت کوین بود.

وقتی فرود آمد، جهت های جدید در رمزنگاری راه اندازی شد نبرد حماسی بین ارتباطات باز و آژانس های جاسوسی دولتی مانند NSA. این یک لحظه فوق العاده در نرم افزار و به طور کلی تاریخ بود و ما آن را به صورت مکتوب داریم. نویسندگان همچنین به نظر می‌رسید که ماهیت رادیکال پیشنهاد خود را درک کرده باشند – بالاخره کلمات آغازین مقاله این بود: “ما امروز در آستانه یک انقلاب در رمزنگاری هستیم.”

۶. ریچارد استالمن: مانیفست گنو (۱۹۸۵)

مانیفست گنو به یک معنا مانیفست نرم افزار منبع باز است. همچنین این یک ادعای جسورانه در مورد اخلاق برنامه نویسی دوست داشتنی است که امروزه بسیاری از توسعه دهندگان از آن استقبال می کنند:

در اینجا مقدمه اصلی منبع باز است. (به نام هوشمندانه و ارجاعی خود، یکی دیگر از نکات OSS توجه کنید.) این مقاله در ادامه یک پروژه جسورانه را توصیف می‌کند – یک سیستم عامل با کیفیت و در دسترس عموماً برای استفاده هر کسی – و آن را با یک بحث فلسفی پشتیبانی می‌کند.

این مانیفست بسیار خوانا و سرگرم کننده (حتی کمی هوشمندانه) مخالف مدل منبع بسته و پرداخت به ازای مجوز است که در آن زمان بر صنعت حاکم بود. همانطور که تاریخ نشان داده است، به طرز باورنکردنی، این یکی از مواردی بود که در آن شورشیان زبردست پیروز شدند. نرم‌افزار متن‌باز امروزه در همه جا وجود دارد و برنامه‌نویسی به عشق آن، در عین حال که از طریق آن امرار معاش می‌کند، یک روش کامل زندگی است.

مانیفست گنو هنوز به اندازه‌ای تازه است که به نظر می‌رسد. برای یک پروژه GitHub در سال ۲۰۲۳ نوشته شده است. مطمئناً این مقاله سرگرم کننده ترین مقاله در این لیست است.

۷. روی فیلدینگ: سبک های معماری و طراحی معماری های نرم افزاری مبتنی بر شبکه (۲۰۰۰)

متوجه خواهید شد که من در اینجا در مورد تاریخ ها کمی بداخلاق می کنم. اگرچه مقاله فیلدینگ که سبک معماری REST را معرفی می‌کند در سال ۲۰۰۰ منتشر شد، درس‌های آموخته شده در محیط برنامه‌نویسی توزیع‌شده دهه ۹۰ را خلاصه کرد، سپس راهی به جلو پیشنهاد کرد. از این نظر، من معتقدم که دو دهه سابقه توسعه نرم افزار را در اختیار دارد.

این مقاله همه چیزهایی را که توسعه‌دهندگان از اینترنت اولیه آموخته‌اند جمع‌آوری می‌کند و راه‌حلی برای مشکلات مبرم آن ارائه می‌دهد. REST مهم است زیرا هدف خوبی را در قلب پیچیدگی نرم افزار مدرن ایجاد می کند. به همین دلیل است که برای دو دهه سنگ محک برای تصمیم گیری معماری باقی مانده است.

بزرگترین گلوگاه در مدل های زبان بزرگ

بحث فیلدینگ در مورد پیچیدگی و طراحی همانطور که در معماری وب کاربرد دارد امروز برای توسعه دهندگان مناسب است.

۸. ساتوشی ناکاموتو: بیت کوین: یک سیستم نقدی الکترونیکی همتا به همتا (۲۰۰۸)

مقاله معروف ناکاموتو توسط شخص، گروهی از افراد یا نهاد ناشناخته نوشته شده است. تمام هنرهای قبلی در ارزهای دیجیتال را گرد هم می آورد و راه حلی برای مشکلات اصلی آنها خلاصه می کند. به طور خاص، مقاله بیت کوین به مشکل دوبار خرج کردن می پردازد.

این یک سند کوتاه و قابل دسترسی است. این یک کار عالی برای ترسیم موضوع هزینه مضاعف به زبان ساده انجام می دهد، سپس یک پاسخ مفهومی ارائه می دهد، و سپس برخی از جزئیات پیاده سازی یک راه حل را بررسی می کند.

نیازی نیست در مورد تأثیر این روزنامه یا خشمی که از آن زمان به راه افتاده است به شما بگویم.

فراتر از مفهوم ساده ارزی مانند بیت کوین، این مقاله موتوری را پیشنهاد کرد که می تواند از رمزنگاری در تولید ماشین های مجازی توزیع شده مانند اتریوم استفاده کند.

کاغذ بیت کوین نمونه فوق العاده ای از نحوه ارائه یک راه حل ساده و تمیز برای یک راه حل به ظاهر گیج کننده است. ظروف پیچیدگی.

۹. مارتین آبادی و همکاران: TensorFlow: A System for Large-Scale Machine Learning (2015)

اگر به دنبال نقطه عطف مهمی در راه سیستم‌های هوش مصنوعی مدرن مدل بزرگ زبان (LLM) هستید، کاغذ سفید TensorFlow همان است. این به عنوان بحث در مورد چارچوب یادگیری ماشین تعمیم یافته مرتبط است و TensorFlow، یک پلتفرم شاخص هوش مصنوعی را معرفی می کند.

اگرچه این مقاله آزادانه در انتهای پیچیده حوضچه یادگیری ماشینی فرو می‌رود، اما با تقطیرهای مختصر مانند، “با توجه به دنباله ای از کلمات، یک مدل زبان محتمل ترین کلمه بعدی را پیش بینی می کند.” این یک خلاصه مختصر از آنچه واقعاً در هوش مصنوعی چت مدرن اتفاق می افتد است.

این مقاله، توسط مارتین آبادی و تعداد زیادی از مشارکت‌کنندگان که فهرست آن‌ها بسیار گسترده است، بر ویژگی‌های TensorFlow، به ویژه در ساخت یک پلتفرم هوش مصنوعی تعمیم‌یافته‌تر تمرکز دارد. در این فرآیند، یک تور عالی و سطح بالا از وضعیت هنر در یادگیری ماشین ارائه می دهد. خواندن عالی برای کنجکاوهای ML و کسانی که به دنبال ورود به زبان ساده برای درک عمیق تر از این زمینه هستند. آن را اینجا بخوانید.

نتیجه گیری

شاید باارزش‌ترین نکته از این تور درخشان این باشد که همیشه جایی برای ایده‌ها و رویکردهای جدید وجود دارد. در حال حاضر، کسی، جایی، در حال کار بر روی راهی برای انجام کارهایی است که دنیای توسعه نرم افزار را تکان می دهد. شاید این شما باشید، با مقاله ای که می تواند شماره ۱۰ در این لیست باشد. فقط برای رد ایده های وحشیانه-از جمله ایده های خودتان خیلی سریع عمل نکنید.