برنامه نویسی

آیا نیازی به نگهداری با هوش مصنوعی نیست؟

به این نگاه کن کد بد که واقعا در نظر گرفته شده است سخت برای نگهداری:

public class ClassA
{
    public string FirstName { get; set; }
    public int Age { get; set; } = 20;
}

public class MyProgram
{
    private static int GlobalVariable;

    public void BadMethod()
    {
        var t= typeof(ClassA);
        var i = Activator.CreateInstance(t);
        var firstName = type.GetProperty("FirstName");
        firstName.SetValue(i, "John Doe");

        var ageOfPerson = type.GetProperty("Age");
        var age = property2.GetValue(i);

        Console.WriteLine("Hello World");

        GlobalVariable = 0
    Loop:
        Console.WriteLine($"{property1} was at age {GlobalVariable}.");
        GlobalVariable++;

        if (GlobalVariable < age)
        {
            goto Loop;
        }
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نگهداری از آن سخت است زیرا اصلاح آن برای انسان دشوار است. اما آیا برای هوش مصنوعی هم سخت است!؟
در این پست قصد دارم نحوه کار را نشان دهم هوش مصنوعی می‌تواند یک کد غیرقابل حفظ را خیلی بهتر از انسان بازسازی کند!

برای این من استفاده می کنم هوش مصنوعی بینگ در مثال های زیر

چرا قابل نگهداری نیست؟

بیایید ببینیم چه چیزی این کد را برای انسان غیرقابل نگهداری می کند.

انعکاس بد است

همانطور که می بینید، این کد از بازتاب برای کار با اشیا استفاده می کند. اولین و بزرگترین مشکل این است که اگر به عنوان مثال می خواهید نام آن را تغییر دهید FirstName به Title، احتمالاً فراموش خواهید کرد که رشته لفظی سخت کد شده را در این خط به عنوان یک انسان تغییر دهید:

type.GetProperty("FirstName")`
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اما بیایید ببینیم که آیا هوش مصنوعی بینگ همین اشتباه را انجام می دهد یا نه؟

Refactored با Reflection

چقدر شگفت انگیز… هوش مصنوعی برای اینکه قابل نگهداری باشد نیازی به کد نداشت. فقط خوب کار کرد و آن خط را نیز تغییر داد:

type.GetProperty("Title")`
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نامگذاری بد

همانطور که مشاهده می کنید ClassA واقعا اسم بدی داره می توان دریافت که Person نام بهتری برای آن خواهد بود برای یک انسان زمان می برد تا آن را بفهمد. اما نه برای هوش مصنوعی. ببینید هوش مصنوعی بینگ چگونه این را درک می کند:

Refactored با نام بد

باز هم شگفت انگیز… همانطور که می بینید هوش مصنوعی بینگ کاملاً این را حدس زد Person نام خوبی برای ClassA.

درک حلقه با goto سخت است

همانطور که می بینید از این کد استفاده شده است goto برای پیاده سازی یک حلقه، به جای a for، foreach، یا حتی الف while بیانیه. درک چنین حلقه ای برای انسان دشوار است و تغییر آن دشوار است.
حلقه چاپ تمام سنینی است که فرد تاکنون زندگی کرده است! اگر کسی مجبور باشد فقط نیمی از سن یک فرد را چاپ کند، اعمال تغییر مناسب توسط یک انسان واقعاً دشوار است.
اما بیایید ببینیم هوش مصنوعی Bing چگونه این کار را انجام می دهد؟

حلقه بد را بازسازی کرد

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

GlobalVariable += 2;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

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

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

بنابراین، آیا می توان گفت در آینده نیاز به کد قابل نگهداری در نهایت کاهش خواهد یافت!؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا