آینده توسعه نرم افزار: آینده کامپیوترها P2
آینده توسعه نرم افزار: آینده کامپیوترها P2
در سال 1969، نیل آرمسترانگ و باز آلدرین پس از اینکه اولین انسان هایی بودند که پا بر روی ماه گذاشتند، قهرمانان بین المللی شدند. اما در حالی که این فضانوردان قهرمانان جلوی دوربین بودند، هزاران قهرمان گمنام وجود دارند که بدون مشارکت آنها، اولین فرود انسان روی ماه غیرممکن بود. تعدادی از این قهرمانان توسعه دهندگان نرم افزاری بودند که پرواز را کدگذاری کردند. چرا؟
خب، کامپیوترهایی که در آن زمان وجود داشتند بسیار ساده تر از امروز بودند. در واقع، گوشیهای هوشمند فرسوده افراد عادی چندین مرتبه قدرتمندتر از هر چیزی در فضاپیمای آپولو 11 (و تمام ناسا در دهه 1960) است. علاوه بر این، کامپیوترها در آن زمان توسط توسعهدهندگان نرمافزار تخصصی که نرمافزار را به ابتداییترین زبانهای ماشین برنامهنویسی میکردند، کدگذاری میشدند: AGC Assembly Code یا به سادگی، 1s و 0s.
برای زمینه، یکی از این قهرمانان گمنام، مدیر بخش مهندسی نرم افزار برنامه فضایی آپولو، مارگارت همیلتونو تیم او مجبور شد کوهی از کد بنویسد (تصویر زیر) که با استفاده از زبان های برنامه نویسی امروزی می توانست با کسری از تلاش نوشته شود.
(تصویر بالا مارگارت همیلتون را نشان می دهد که در کنار یک پشته کاغذ حاوی نرم افزار آپولو 11 ایستاده است.)
و برخلاف امروزه که توسعه دهندگان نرم افزار حدود 80 تا 90 درصد از سناریوهای ممکن را کدنویسی می کنند، برای ماموریت های آپولو، کد آنها باید همه چیز را در بر می گرفت. برای در نظر گرفتن این موضوع، خود مارگارت گفت:
"به دلیل یک خطا در راهنمای چک لیست، سوئیچ رادار قرار ملاقات در موقعیت اشتباه قرار گرفت. این باعث شد سیگنال های اشتباهی به رایانه ارسال کند. نتیجه این شد که از رایانه خواسته شد تا تمام عملکردهای عادی خود را برای فرود انجام دهد. در حالی که یک بار اضافی از داده های جعلی دریافت می کرد که 15 درصد از زمان آن را مصرف می کرد. رایانه (یا بهتر است بگوییم نرم افزار موجود در آن) به اندازه کافی هوشمند بود تا تشخیص دهد که از آن خواسته می شود کارهای بیشتری از آنچه باید انجام دهد انجام دهد. سپس ارسال کرد. یک زنگ هشدار، که برای فضانورد به این معنی بود که من با وظایفی بیش از آنچه که باید در این زمان انجام میدادم بیش از حد بارگذاری شدهام و فقط کارهای مهمتر را حفظ میکنم؛ یعنی کارهایی که برای فرود نیاز دارند... در واقع. ، کامپیوتر به گونه ای برنامه ریزی شده بود که کارهایی بیش از تشخیص شرایط خطا انجام دهد. مجموعه کاملی از برنامه های بازیابی در نرم افزار گنجانده شده بود. اقدام نرم افزار در این مورد، حذف وظایف با اولویت پایین تر و برقراری مجدد موارد مهم تر بود. اگر کامپیوتر نداشتاین مشکل را تشخیص داد و اقداماتی را برای بازیابی انجام داد، من شک دارم که آیا آپولو 11 فرود موفقیت آمیز روی ماه بود یا خیر.
- مارگارت همیلتون، مدیر برنامهنویسی کامپیوتر پرواز آپولو آزمایشگاه MIT Draper، کمبریج، ماساچوست، "Computer Got Loaded"، نامه ای به Datamation، مارس 1، 1971
همانطور که قبلا اشاره شد، توسعه نرم افزار از همان روزهای اولیه آپولو تکامل یافته است. زبانهای برنامهنویسی سطح بالا، فرآیند خستهکننده کدنویسی را با 1 و 0 به کدنویسی با کلمات و نمادها جایگزین کردند. توابعی مانند تولید یک عدد تصادفی که نیاز به چند روز کدنویسی داشت، اکنون با نوشتن یک خط فرمان جایگزین شده است.
به عبارت دیگر، کدنویسی نرم افزار با گذشت هر دهه به طور فزاینده ای خودکار، شهودی و انسانی می شود. این ویژگیها تنها در آینده ادامه خواهند داشت و تکامل توسعه نرمافزار را به روشهایی هدایت میکنند که تأثیر عمیقی بر زندگی روزمره ما خواهد داشت. این چیزی است که این فصل از آینده کامپیوترها سری بررسی خواهد شد
توسعه نرم افزار برای توده ها
فرآیند جایگزینی نیاز به کدهای 1 و 0 (زبان ماشین) با کلمات و نمادها (زبان انسان) به عنوان فرآیند افزودن لایههای انتزاع نامیده میشود. این انتزاعات در قالب زبان های برنامه نویسی جدید آمده اند که توابع پیچیده یا مشترک را برای زمینه ای که برای آن طراحی شده اند خودکار می کنند. اما در اوایل دهه 2000، شرکتهای جدیدی ظهور کردند (مانند Caspio، QuickBase و Mendi) که شروع به ارائه پلتفرمهای بدون کد یا کمکد کردند.
اینها داشبوردهای آنلاین و کاربرپسندی هستند که به متخصصان غیر فنی امکان میدهند برنامههای سفارشی متناسب با نیازهای کسبوکار خود را از طریق جمع کردن بلوکهای بصری کد (نمادها/گرافیکها) ایجاد کنند. به عبارت دیگر، به جای قطع کردن یک درخت و تبدیل آن به یک کابینت پانسمان، آن را با استفاده از قطعات از پیش ساخته شده از Ikea میسازید.
در حالی که استفاده از این سرویس هنوز به سطح خاصی از دانش کامپیوتر نیاز دارد، دیگر نیازی به مدرک علوم کامپیوتر ندارید و از آن استفاده کنید. در نتیجه، این شکل از انتزاع، ظهور میلیونها «توسعهدهنده نرمافزار» جدید در دنیای شرکتها را ممکن میسازد، و بسیاری از کودکان را قادر میسازد تا نحوه کدنویسی را در سنین پایینتر یاد بگیرند.
بازتعریف معنای توسعهدهنده نرمافزار بودن
زمانی بود که منظره یا چهره یک شخص را فقط می شد روی بوم ثبت کرد. یک نقاش باید سالها به عنوان یک شاگرد مطالعه و تمرین کند و هنر نقاشی را بیاموزد - چگونه رنگها را ترکیب کند، چه ابزاری بهتر است، تکنیکهای صحیح برای اجرای یک تصویر خاص. هزینه تجارت و سالها تجربه لازم برای اجرای خوب آن نیز به این معنی بود که نقاشان کم و زیاد بودند.
سپس دوربین اختراع شد. و با کلیک یک دکمه، مناظر و پرتره ها در یک ثانیه ثبت شدند که در غیر این صورت نقاشی کردن آنها روزها تا هفته ها طول می کشد. و با بهبود، ارزانتر شدن و فراوان شدن دوربینها به حدی که حتی در ابتداییترین گوشیهای هوشمند نیز گنجانده شدهاند، ثبت دنیای اطراف ما به یک فعالیت معمولی و معمولی تبدیل شد که اکنون همه در آن شرکت میکنند.
همانطور که انتزاعات پیشرفت میکنند و زبانهای نرمافزار جدید کار توسعه نرمافزار روتینتر را خودکار میکنند، توسعهدهنده نرمافزار در 10 تا 20 سال آینده چه معنایی خواهد داشت؟ برای پاسخ به این سوال، اجازه دهید در مورد چگونگی ساخت برنامههای کاربردی فردا توسط توسعهدهندگان نرمافزار آینده صحبت کنیم:
*ابتدا، تمام کارهای کدنویسی استاندارد شده و تکراری ناپدید خواهند شد. به جای آن یک کتابخانه وسیع از رفتارهای اجزای از پیش تعریف شده، رابط کاربری و دستکاری های جریان داده (قطعات Ikea) وجود خواهد داشت.
*مانند امروز، کارفرمایان یا کارآفرینان اهداف و دستاوردهای خاصی را برای توسعه دهندگان نرم افزار تعریف می کنند تا از طریق برنامه ها یا پلتفرم های نرم افزاری تخصصی اجرا شوند.
*این توسعهدهندگان سپس استراتژی اجرای خود را ترسیم میکنند و با دسترسی به کتابخانه مؤلفههای خود و استفاده از رابطهای بصری برای پیوند دادن آنها به یکدیگر – رابطهای بصری که از طریق واقعیت افزوده (AR) یا واقعیت مجازی (VR) قابل دسترسی هستند، شروع به نمونهسازی پیشنویسهای اولیه نرمافزار خود میکنند.
*سیستمهای تخصصی هوش مصنوعی (AI) که برای درک اهداف و موارد قابل ارائه در پیشنویسهای اولیه توسعهدهندهشان طراحی شدهاند، سپس طراحی نرمافزار پیشنویس شده را اصلاح میکنند و تمام تستهای تضمین کیفیت را خودکار میکنند.
*بر اساس نتایج، هوش مصنوعی سوالات متعددی را از توسعهدهنده میپرسد (احتمالاً از طریق ارتباط کلامی و شبیه الکسا)، به دنبال درک و تعریف بهتر اهداف و نتایج پروژه و بحث در مورد نحوه عملکرد نرمافزار در سناریوهای مختلف. و محیط ها
*بر اساس بازخورد توسعهدهنده، هوش مصنوعی به تدریج قصد خود را یاد میگیرد و کدی را برای بازتاب اهداف پروژه تولید میکند.
*این همکاری بین انسان و ماشین، نسخه به نسخه نرم افزار را تکرار می کند تا زمانی که نسخه کامل و قابل فروش آن برای پیاده سازی داخلی یا برای فروش به عموم آماده شود.
*در واقع این همکاری پس از اینکه نرم افزار در معرض استفاده واقعی قرار گرفت ادامه خواهد داشت. همانطور که باگهای ساده گزارش میشوند، هوش مصنوعی آنها را بهطور خودکار برطرف میکند، به نحوی که منعکسکننده اهداف اصلی و دلخواه مشخصشده در طول فرآیند توسعه نرمافزار باشد. در همین حال، اشکالات جدی تری نیاز به همکاری انسان و هوش مصنوعی برای حل این مشکل دارند.
به طور کلی، توسعه دهندگان نرم افزار آینده کمتر بر روی "چگونه" و بیشتر بر روی "چه چیزی" و "چرا" تمرکز خواهند کرد. آنها کمتر صنعتگر و معمارتر خواهند بود. برنامه نویسی یک تمرین فکری خواهد بود که به افرادی نیاز دارد که بتوانند هدف و نتایج را به شیوه ای که هوش مصنوعی بتواند درک کند و سپس به صورت خودکار یک برنامه یا پلتفرم دیجیتالی تمام شده را کدگذاری کند، با هدف و نتایج ارتباط برقرار کنند.
توسعه نرم افزار مبتنی بر هوش مصنوعی
با توجه به بخش فوق، واضح است که ما احساس می کنیم هوش مصنوعی نقش محوری فزاینده ای در زمینه توسعه نرم افزار ایفا خواهد کرد، اما پذیرش آن صرفاً به منظور مؤثرتر کردن توسعه دهندگان نرم افزار نیست، نیروهای تجاری نیز در پشت این روند هستند.
رقابت بین شرکت های توسعه نرم افزار هر سال که می گذرد شدیدتر می شود. برخی از شرکت ها با خرید رقبای خود به رقابت می پردازند. دیگران بر سر تمایز نرم افزار رقابت می کنند. چالش استراتژی دوم این است که به راحتی قابل دفاع نیست. هر ویژگی نرم افزاری یا بهبودی که یک شرکت به مشتریان خود ارائه می دهد، رقبای آن می توانند با سهولت نسبی کپی کنند.
به همین دلیل، روزهایی که شرکت ها هر یک تا سه سال یک بار نرم افزارهای جدید را عرضه می کنند، گذشته است. این روزها، شرکت هایی که بر تمایز تمرکز می کنند، انگیزه مالی برای انتشار نرم افزارهای جدید، اصلاحات نرم افزاری و ویژگی های نرم افزاری به طور فزاینده ای دارند. هرچه شرکتها سریعتر نوآوری کنند، وفاداری مشتریان را بیشتر میکنند و هزینه تغییر به رقبا را افزایش میدهند. این تغییر به سمت تحویل منظم بهروزرسانیهای نرمافزاری افزایشی، روندی است که «تحویل مداوم» نامیده میشود.
متاسفانه، تحویل مداوم آسان نیست. به سختی یک چهارم از شرکت های نرم افزاری امروزی می توانند برنامه انتشار درخواست شده از این روند را اجرا کنند. و به همین دلیل است که علاقه زیادی به استفاده از هوش مصنوعی برای سرعت بخشیدن به کارها وجود دارد.
همانطور که قبلاً اشاره شد، هوش مصنوعی در نهایت نقش مشترک فزایندهای در تهیه و توسعه نرمافزار ایفا خواهد کرد. اما در کوتاه مدت، شرکت ها از آن برای خودکارسازی فزاینده فرآیندهای تضمین کیفیت (تست) نرم افزار استفاده می کنند. و سایر شرکتها در حال آزمایش با استفاده از هوش مصنوعی برای خودکارسازی اسناد نرمافزاری هستند - فرآیند ردیابی انتشار ویژگیها و اجزای جدید و نحوه تولید آنها تا سطح کد.
به طور کلی، هوش مصنوعی به طور فزاینده ای نقش محوری در توسعه نرم افزار ایفا خواهد کرد. آن دسته از شرکتهای نرمافزاری که زودتر به استفاده از آن تسلط پیدا کنند، در نهایت از رشد تصاعدی نسبت به رقبای خود برخوردار خواهند شد. اما برای تحقق بخشیدن به این دستاوردهای هوش مصنوعی، صنعت همچنین باید شاهد پیشرفتهایی در بخش سختافزاری چیزها باشد - بخش بعدی به توضیح این نکته میپردازد.
نرم افزار به عنوان یک سرویس
تمامی افراد حرفه ای خلاق از نرم افزار Adobe هنگام ایجاد هنر دیجیتال یا کار طراحی استفاده می کنند. برای نزدیک به سه دهه، شما نرمافزار Adobe را بهعنوان یک سیدی خریداری کردید و از آن استفاده دائمی داشتید و در صورت نیاز نسخههای ارتقا یافته بعدی را خریداری میکردید. اما در اواسط دهه 2010، Adobe استراتژی خود را تغییر داد.
به جای خرید سی دی های نرم افزاری با کلیدهای مالکیت پیچیده، مشتریان Adobe اکنون باید یک اشتراک ماهانه برای حق دانلود نرم افزار Adobe بر روی دستگاه های محاسباتی خود بپردازند، نرم افزاری که تنها در کنار اتصال اینترنت معمولی تا ثابت به سرورهای Adobe کار می کند. .
با این تغییر، مشتریان دیگر مالک نرم افزار Adobe نیستند. آنها آن را در صورت نیاز اجاره کردند. در مقابل، مشتریان دیگر مجبور نیستند دائماً نسخه های ارتقا یافته نرم افزار Adobe را خریداری کنند. تا زمانی که آنها در سرویس Adobe مشترک شوند، همیشه آخرین به روز رسانی ها را بلافاصله پس از انتشار در دستگاه خود آپلود می کنند (اغلب چندین بار در سال).
این تنها یک نمونه از یکی از بزرگترین روندهای نرمافزاری است که در سالهای اخیر دیدهایم: چگونه نرمافزار به جای یک محصول مستقل، به خدمات تبدیل میشود. و نه تنها نرم افزارهای کوچکتر و تخصصی، بلکه کل سیستم عامل ها، همانطور که با انتشار به روز رسانی ویندوز 10 مایکروسافت دیدیم. به عبارت دیگر، نرم افزار به عنوان یک سرویس (SaaS).
نرم افزار خودآموز (SLS)
با تکیه بر تغییر صنعت به سمت SaaS، روند جدیدی در فضای نرم افزاری در حال ظهور است که هر دو SaaS و AI را ترکیب می کند. شرکتهای پیشرو از آمازون، گوگل، مایکروسافت و آیبیام شروع به ارائه زیرساختهای هوش مصنوعی خود به عنوان خدمات به مشتریان خود کردهاند.
به عبارت دیگر، دیگر هوش مصنوعی و یادگیری ماشین تنها برای غولهای نرمافزار قابل دسترسی نیست، اکنون هر شرکت و توسعهدهندهای میتواند به منابع آنلاین هوش مصنوعی برای ساختن نرمافزار خودآموز (SLS) دسترسی داشته باشد.
ما پتانسیل هوش مصنوعی را در سری آینده هوش مصنوعی خود به تفصیل مورد بحث قرار خواهیم داد، اما در زمینه این فصل، می گوییم که توسعه دهندگان نرم افزار فعلی و آینده SLS را برای ایجاد سیستم های جدیدی ایجاد خواهند کرد که وظایفی را که نیاز به انجام و انجام آنها را پیش بینی می کنند، ایجاد خواهند کرد. به سادگی آنها را به صورت خودکار برای شما تکمیل کنید.
این بدان معناست که یک دستیار هوش مصنوعی آینده سبک کار شما را در دفتر میآموزد و شروع به انجام کارهای اساسی برای شما میکند، مانند قالببندی اسناد همانطور که دوست دارید، تهیه پیشنویس ایمیلهای شما با لحن صدای شما، مدیریت تقویم کاری شما و موارد دیگر.
در خانه، این می تواند به این معنی باشد که یک سیستم SLS خانه هوشمند آینده شما را مدیریت کند، از جمله کارهایی مانند گرم کردن خانه قبل از رسیدن یا پیگیری خواربارهایی که باید بخرید.
تا سال 2020 و تا دهه 2030، این سیستم های SLS نقشی حیاتی در بازارهای شرکتی، دولتی، نظامی و مصرف کننده ایفا خواهند کرد و به تدریج به هر یک از آنها کمک می کند تا بهره وری خود را بهبود بخشند و ضایعات را کاهش دهند. بعداً در این مجموعه، فناوری SLS را با جزئیات بیشتری پوشش خواهیم داد.
با این حال، همه اینها یک گیرایی وجود دارد.
تنها راهی که مدلهای SaaS و SLS کار میکنند این است که اینترنت (یا زیرساخت پشت آن) به رشد و بهبود ادامه دهد، در کنار سختافزار محاسباتی و ذخیرهسازی که «ابر» این سیستمهای SaaS/SLS را اجرا میکند. خوشبختانه، روندهایی که ما دنبال می کنیم امیدوارکننده به نظر می رسند.
برای اطلاع از چگونگی رشد و تکامل اینترنت، ما را بخوانید آینده اینترنت سلسله. برای کسب اطلاعات بیشتر در مورد چگونگی پیشرفت سخت افزار کامپیوتر، سپس با استفاده از پیوندهای زیر ادامه مطلب را بخوانید!
سری آینده کامپیوترها
رابط های کاربری در حال ظهور برای تعریف مجدد بشریت: آینده رایانه ها P1
انقلاب ذخیره سازی دیجیتال: آینده رایانه ها P3
قانون مور در حال محو شدن برای جرقه تجدید نظر اساسی در مورد ریزتراشه ها: آینده رایانه ها P4
رایانش ابری غیرمتمرکز می شود: آینده رایانه ها P5
چرا کشورها برای ساخت بزرگترین ابررایانه ها با هم رقابت می کنند؟ آینده کامپیوترها P6
چگونه کامپیوترهای کوانتومی جهان را تغییر خواهند داد: آینده کامپیوترها P7
به روز رسانی برنامه ریزی شده بعدی برای این پیش بینی
مراجع پیش بینی
پیوندهای محبوب و سازمانی زیر برای این پیشبینی ارجاع داده شد:
پیوندهای Quantumrun زیر برای این پیش بینی ارجاع داده شدند: