وبلاگ‌نویسِ فنلاندی با نامِ مستعارِ ویزنات می‌گوید نرم‌افزارها—و کلاً تمدنِ صنعتیِ معاصر—یک مشکلِ اساسی دارند. او حرفش را با ارائهٔ مثال‌هایی از برنامه‌نویسی و توسعهٔ نرم‌افزارهای کامپیوتری می‌زند. یادداشتِ او مفصل است؛ من خلاصه‌ای از مقدمهٔ آن را ذکر می‌کنم.

هر وقت کسی می‌خواهد به اسراف‌گر بودنِ برنامه‌ها و محاسباتِ کامپیوتری اشاره‌ای نقادانه کند با این پاسخ مواجه می‌شود که این‌ها بده‌بستان‌ها و ضرورت‌هایی عملی هستند: این درست که نرم‌افزارها در مصرفِ منابع اسراف می‌کنند، اما در عوض انعطاف‌پذیری، قابلیتِ اعتماد، قابلیتِ نگهداری و مهم‌تر از همه سادگی و ارزانی برنامه‌نویسی را به ارمغان می‌آورند. ویزنات تا مدت‌ها این استدلال را پذیرفته بوده، تا این‌که کم‌کم متوجه می‌شود که مزایایی که نرم‌افزارها در قبالِ اسراف‌گریِ شگفت‌انگیزشان ارائه می‌دهند ناچیز و حاشیه‌ای هستند: بخشِ بزرگی از این اسراف‌گری نتیجهٔ ازدحامِ انتزاعی‌سازی‌هایی است که هیچ نقشی در برنامهٔ اجراییِ نهایی ندارند. عمدهٔ این ازدحام را می‌توان با استفاده از روش‌ها و ابزارهایِ اندکی اندیشیده‌تر—و بدونِ کوچک‌ترین اثرِ منفی در سایرِ مزایایِ یاد شده—حذف کرد. اسراف‌گریِ خیره‌کنندهٔ جهانِ پردازشِ کامپیوتری به هیچ‌وجه ابزارگرایانه[۱]utilitarian نیست، بلکه آینه‌ای است از اسراف‌گریِ کلی‌تر و ذاتی مربوط به تمدنِ معاصرِ صنعتی: تمدنِ معاصر یک «باگ»[۲]bug خیلی مهم دارد.

شیوهٔ نظامِ اقتصادیِ مدرن مبتنی بر بیشینه‌سازیِ تولید و رشد است. مشارکت‌کنندگان در این اقتصاد، برای این‌که نابود نشوند باید سهمِ خود را از کیک افزایش دهند. بنابراین خیلی وقت‌ها ناچار می‌شوند تومورهایی سرطان‌گونه در سهمِ خود از اقتصاد جاسازی کنند تا با رشدِ خودبه‌خودی حضورشان در اقتصاد را تضمین نمایند. این باعث می‌شود در سراسرِ جهان شاهدِ رشدِ انواعِ‌ انگل‌ها باشیم که خودشان را به صورتِ انواعِ جعبه‌هایِ سیاهی که سازوکارِ آن‌ها بر کسی عیان نیست، کهنگی عمدی[۳]planned obsolescence و خلقِ مصنوعیِ انواع نیازهای اقتصادی نشان می‌دهند.

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

به چشمِ کاربرانِ نهایی، خیلی از باگ‌ها به صورتِ خصوصیت‌هایی ضروری جلوه می‌کنند؛ چرا که آن‌ها با گزینه‌هایِ ممکنِ دیگر آشنا نیستند. همین را می‌توان دربارهٔ جامعه نیز گفت. وقتی با یک باگِ اساسی در سطحِ اقتصاد مواجه می‌شویم، ممکن است آن‌را یک شرِ ضروری تلقی کنیم، چرا که دربارهٔ حالت‌هایِ دیگر هیچ‌ نمی‌دانیم. حالا تصور کنید به این تمدنِ ذاتاً اسراف‌گرِ معاصر یک دنیایِ مجازی داده شود که در آن منابع به صورتِ نمایی و ظاهراً بی‌پایانی رشد می‌کنند؛ مثلاً طبقِ قانونِ مور[۴]Moore’s law. عجیب نخواهد بود اگر همین رفتار را، ولی به شکلی افراطی‌تر، در آن‌جا هم ادامه دهد و سعی کند تا آن‌جا که می‌تواند از منابعِ بیشتری بهره‌برداری کند. از آن‌جا که جهانِ پردازش ظاهراً بی‌پایان است، می‌توان آن‌را یک نمونهٔ آزمایشگاهیِ جالب دانست که در آن‌ ایدئولوژیِ رشد-برای-رشد به شکلِ ناب و افراطیِ خود نزدیک می‌شود. تقریباً هدفِ همهٔ رویه‌ها، زبان‌هایِ برنامه‌نویسی و ابزارهای موجود در جهانِ مجازی، رشد و رشد و رشدِ بیشتر و نادیده گرفتنِ سایرِ جنبه‌هاست.

عادتِ برنامه‌نویسان، اتخاذِ استراتژیِ کپسوله‌سازی[۵]encapsulation برای رویارویی با تقریباً هر مشکلی است. کپسوله‌سازی انتخابی ساده، عمل‌گرایانه و جهانی به نظر می‌رسد، اما این احساس صرفاً به خاطرِ ابزارها و فلسفه‌هایی است که به کار می‌گیرند. این ابزارها کپسوله‌سازی و تجمیع‌سازی را ساده می‌کنند و فرایندهایِ صنعتیِ مهندسیِ نرم‌افزار هم بر همین ایده‌ها تأکید می‌کنند. گزینه‌هایِ دیگر توسعه‌نیافته باقی می‌مانند. ویزنات مثالِ جالبی از استراتژیِ کپسوله‌سازی ارائه می‌دهد:

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


  1. utilitarian 

  2. bug 

  3. planned obsolescence 

  4. Moore’s law 

  5. encapsulation