جوهر تطوير البرمجيات
"نحتاج إلى عمل 500 ثقب في الحائط ، لذا صممت مثقابًا أوتوماتيكيًا." يستخدم التروس الأنيقة والدقيقة لضبط السرعة وعزم الدوران باستمرار حسب الحاجة.
- عظيم ، لها وزن مثالي. نقوم بتحميل 500 من هذه التدريبات في المدفع ، الذي قمنا به ، ونطلق النار على الحائط.أقوم بالبرمجة لمدة 15 عامًا. ولكن في الآونة الأخيرة ، أثناء التطوير ، لم يكن من المعتاد التفكير في الكفاءة والبساطة والكمال: حتى النقطة التي أشعر فيها بالحزن على مسيرتي المهنية وصناعة تكنولوجيا المعلومات ككل.
على سبيل المثال ، تعمل السيارات الحديثة ، على سبيل المثال ، 98٪ مما يسمح به تصميم المحرك الحالي فعليًا. تستخدم العمارة الحديثة كمية محسوبة بدقة من المواد لأداء وظيفتها والبقاء آمنًا في هذه الظروف. تتقارب جميع الطائرات إلى الحجم / الشكل / الحمل الأمثل وتبدو متشابهة بشكل أساسي.
فقط في البرنامج يعتبر طبيعيًا إذا كان البرنامج يعمل عند مستوى 1٪ أو حتى 0.01٪ من الأداء المحتمل. يبدو أن لا أحد لديه أي اعتراض.
حتى أن الناس فخورون بمدى عدم كفاءة البرنامج ، مثل "لماذا تهتم ، أجهزة الكمبيوتر سريعة بما يكفي":
tveastman : أقوم بتشغيل برنامج Python كل يوم ، ويتم تشغيله في 1.5 ثانية. قضيت ست ساعات وأعدت كتابتها على Rust ، وهي الآن تعمل في 0.06 ثانية. هذا التسارع يعني أن وقتي سيؤتي ثماره في 41 سنة ، 24 يومًا :-)
ربما سمعت هذا الشعار: "وقت المبرمج أغلى من وقت الكمبيوتر". هذا يعني أننا نقضي وقت الكمبيوتر على نطاق غير مسبوق. هل تشتري سيارة بمعدل تدفق 100 لتر لكل 100 كيلومتر؟ ماذا عن 1000 لتر؟ مع أجهزة الكمبيوتر ، يحدث هذا طوال الوقت.
كل شيء بطيء بشكل لا يطاق
ألق نظرة حولك: أجهزة الكمبيوتر المحمولة أقوى بآلاف المرات من تلك التي جلبت شخصًا إلى القمر. ومع ذلك ، لا يمكن لكل موقع ثاني توفير 60 إطارًا في الثانية للتمرير السلس على أحدث إصدار من MacBook Pro. يمكنني اللعب بشكل مريح ، ومشاهدة مقاطع فيديو 4K ، ولكن لا يمكنني التمرير عبر صفحات الويب! هل هذا جيد؟
يستغرق تطبيق
بريد Google Inbox في متصفح Chrome من Google نفسه
13 ثانية لفتح بريد إلكتروني متوسط الحجم :
كما أنها تحرك الأشكال البيضاء الفارغة بدلاً من إظهار محتوياتها ، لأن هذه هي الطريقة الوحيدة لتحريك شيء ما على صفحة ويب بأداء لائق. لا ، ليس 60 إطارًا في الثانية ، بل "بأسرع ما يمكن في هذه الصفحة". أتطلع إلى ما سيقدمه مجتمع الويب عندما تصبح شاشات 120 هرتز التيار السائد. بالكاد يتعاملون مع 60 هرتز.
تستغرق ترقية Windows 10
30 دقيقة . ما الذي يمكن عمله لفترة طويلة؟ هذه المرة كافية لتهيئة محرك أقراص SSD الخاص بي بالكامل ، وتنزيل أحدث إصدار وتثبيته حوالي 5 مرات متتالية.

بافيل فاتين : تعد الكتابة في المحرر عملية بسيطة نسبيًا ، لذلك حتى 286 يمكن أن توفر عملية كتابة سلسة إلى حد ما.
في محرري النصوص الحديثة ، تعد تأخيرات الكتابة أطول مما كانت عليه في إيماكس البالغة من العمر 42 عامًا. محرري النص! ما يمكن أن يكون أسهل؟ لكل ضغطة مفتاح ، تحتاج فقط إلى تحديث المنطقة المستطيلة الصغيرة على الشاشة ، ولا يمكن لمحرري النص الحديث القيام بذلك في 16 مللي ثانية. وهذا وقت طويل. الكثير. لعبة ثلاثية الأبعاد تملأ الشاشة بمئات الآلاف (!!!) من المضلعات لنفس 16 مللي ثانية ، وتعالج أيضًا المدخلات ، وتروي العالم وتحمل / تفريغ الموارد ديناميكيًا. كيف ذلك؟
الاتجاه هو أن البرنامج لا يصبح أسرع وأكثر وظيفية على الإطلاق. نحصل على معدات أسرع يتم فيها التبديل بين البرامج ذات الوظائف نفسها بشكل أبطأ من ذي قبل. كل شيء يعمل بشكل أبطأ من السرعة القصوى. هل تساءلت يومًا عن سبب تشغيل هاتفك من 30 إلى 60 ثانية؟ لماذا لا يمكن التمهيد ، على سبيل المثال ، في ثانية واحدة؟ لا توجد قيود جسدية. أنا شخصياً أود ذلك. أريد أن يصل المطورون إلى الحد الأقصى ، باستخدام كل جزء للأداء.
كل شيء ضخم
وهذا ينتفخ. يمكن أن تفتح تطبيقات الويب أسرع عشر مرات إذا قمت ببساطة بحظر الإعلانات. تطلب Google من الجميع إيقاف المكابح بمساعدة مبادرة AMP - حل تقني لا يحتاج إلى أي تقنية ، فقط القليل من الحس السليم. إذا قمت بإزالة الانتفاخ ، سيبدأ الإنترنت في العمل بسرعة جنونية. هل من الصعب حقا أن نفهم؟
يشغل نظام Android بدون تطبيقات
ما يقرب من 6 غيغابايت . فقط فكر لثانية كم هو غير لائق العدد الضخم. ما هو ، أفلام عالية الدقة؟ أعتقد في الغالب الرمز: kernel ، السائقين. بعض الموارد الأخرى بالطبع ، لكنها لا يمكن أن تكون كبيرة جدًا. كم عدد برامج التشغيل التي تحتاجها للهاتف؟

استغرق Windows 95 حتى 30 ميغا بايت. اليوم لدينا صفحات ويب أثقل من نظام التشغيل هذا! Windows 10 بالفعل 4 غيغابايت ، أي أكثر 133 مرة. ولكن هل هو أفضل 133 مرة؟ أعني ، من الناحية الوظيفية ، هم تقريبًا نفس الشيء. نعم ، لدينا Cortana ، لكني أشك في أنه يزن 3970 ميغابايت. ولكن هذا هو نظام التشغيل Windows 10 ، هل يجب أن يكون Android أكثر بمعدل مرة ونصف؟
تطبيق لوحة مفاتيح Google ، كما لو لم يحدث شيء ، يأكل 150 ميجا بايت. يرسم هذا البرنامج 30 مفتاحًا على الشاشة - هل هو أكثر تعقيدًا بخمس مرات من نظام التشغيل Windows 95؟ تطبيق Google ، الذي هو في الأساس مجرد حزمة لبحث الويب من Google ، يستغرق 350 ميغابايت! تبلغ خدمات Google Play التي لا أستخدمها (لا أشتري كتبًا أو موسيقى أو مقاطع فيديو هناك) 300 ميغابايت تجلس هنا ولا يمكن حذفها.

بعد تثبيت جميع التطبيقات اللازمة (الشبكات الاجتماعية ، الدردشات ، الخرائط ، سيارات الأجرة ، البنوك ، إلخ) ، يبقى 1 غيغابايت فقط للصور على الهاتف. وهذا بشكل عام بدون ألعاب وموسيقى! هل تتذكر الأوقات التي تم فيها وضع نظام التشغيل والتطبيقات وجميع بياناتك على قرص مرن؟
من المحتمل أن يكون برنامج الملاحظات الخاص بك مكتوبًا في Electron ، وبالتالي فهو
يأتي مع برنامج تشغيل لوحدة تحكم Xbox 360 ، ويمكنه عرض رسومات ثلاثية الأبعاد ، وتشغيل الصوت والتقاط الصور باستخدام كاميرا الويب.

لطالما اشتهرت الدردشة النصية البسيطة بالسرعة وانخفاض استهلاك الذاكرة. لذا يعتبر Slack مثالاً على تطبيق شديد الموارد. أعني ، الدردشة ومحرر النصوص هي الأشياء الأساسية ، يجب أن تستهلك أقل الموارد. مرحبًا بكم في 2018.
يمكنك القول أنهم يعملون على الأقل. لكن الزيادة في الحجم لا تعني تحسنًا. هذا يعني أن شخصًا فقد السيطرة. لم نعد نعرف ما يحدث. الزيادة في الحجم هي زيادة التعقيد ، وانخفاض في الأداء والموثوقية. هذا ليس طبيعيًا ولا يجب اعتباره طبيعيًا. يجب الانتباه فورًا إلى الحجم المتضخم - والابتعاد عنها.
كل شيء متعفن
كان هاتف Android 16 جيجابايت مثاليًا قبل ثلاث سنوات. اليوم ، بالكاد يعمل على Android 8.1 ، لأن كل تطبيق تضاعف على الأقل دون سبب واضح. لا ميزات إضافية. لم يصبحوا أسرع ولم يتغير المظهر. هل هم فقط ... منتفخة؟
تم إصدار iPhone 4s بنظام iOS 5 ، ولكن بالكاد يمكنه تشغيل iOS 9. وهذا ليس لأن iOS 9 أفضل بكثير - في الأساس ، لم يتغير النظام. لكن الأجهزة الجديدة أسرع ، لذا جعلوا البرامج أبطأ. لا تقلق - لديك ميزات جديدة مثيرة ، على سبيل المثال ... تعمل نفس التطبيقات بنفس السرعة! لا اعرف.
توقف iOS 11 عن دعم تطبيقات 32 بت. هذا يعني أنه إذا لم يكن المطور جاهزًا لإعادة التطبيق وتحديثه ، فعلى الأرجح لن ترى هذا البرنامج الممتاز مرة أخرى.
jckarter : يمكن تشغيل برنامج DOS للعمل دون تغيير على أي جهاز كمبيوتر تقريبًا تم تصنيعه بعد الثمانينيات. قد يتعطل تطبيق JavaScript نظرًا لتحديث Chrome غدًا.
لن تعمل صفحات الويب اليوم
في أي متصفح بعد 10 سنوات (أو ربما قبل ذلك).
"نحتاج أن نركض بسرعة لمجرد البقاء في نفس المكان." لكن النقطة؟ يمكنني دائمًا شراء هواتف وأجهزة كمبيوتر محمولة جديدة ، مثل أي شخص آخر ، ولكن هل يمكنني ذلك فقط لأتمكن من تشغيل جميع التطبيقات نفسها ، التي أصبحت أبطأ فقط؟
أعتقد أنه يمكننا ويجب علينا تصحيح الوضع. يقوم الجميع الآن بتطوير برامج لهذا اليوم وأحيانًا للغد. ولكن سيكون من الجيد القيام بأشياء تعمل لفترة أطول قليلاً.
الأسوأ هو الأفضل
الآن لا أحد يفهم أي شيء. ولا تريد الفهم. نحن فقط نطلق هراء نصف مخبوز ونأمل في الأفضل ونطلق عليه "المنطق السليم لبدء التشغيل".
يطلب تحديث صفحات الويب إذا حدث خطأ ما. من لديه الوقت لإيجاد سبب المشكلة؟

ينتج أي تطبيق ويب دفقًا ثابتًا من أخطاء JS "العشوائية" ، حتى على المتصفحات المتوافقة.
بنيت بنية قاعدة بيانات الويب / SQL بالكامل على فرضية (حتى الأمل) في أن لا أحد سيغير البيانات أثناء النظر إلى صفحة ويب مفتوحة.
بذلت معظم تطبيقات التعاون قصارى جهدها ، فهناك الكثير من السيناريوهات النموذجية عندما تفقد البيانات. رأينا الحوار "ما هو الإصدار الذي يجب حفظه؟" اليوم ، الشريط منخفض جدًا لدرجة أن المستخدمين سعداء حتى بشأن هذه المشكلة.

ولا ، في عالمي ، التطبيق ليس طبيعيًا ، والذي يقول: "سأدمر جزءًا من عملك ، فقط اختر أيهما".
يقتل Linux عن
قصد العمليات العشوائية. ومع ذلك هذا هو نظام تشغيل الخادم الأكثر شعبية.
كل جهاز لدي أعطل بانتظام على أي حال. من وقت لآخر ، تحتاج شاشة Dell إلى إعادة تشغيل الأجهزة لأنها تحتوي على برنامج. إسقاط جوي؟ ستكون محظوظًا إذا وجد جهازًا ، وإلا فماذا أفعل؟ بلوتوث؟ المواصفات معقدة للغاية لدرجة أن
الأجهزة لن تتواصل مع بعضها البعض ، وإعادة التشغيل
الدورية هي الخيار الأفضل .

ولا أذكر
إنترنت الأشياء . إنه خارج المنطق لدرجة أنه لا يوجد شيء لإضافته.
أريد أن أكون فخوراً بعملي. أريد عمل أشياء مستقرة. للقيام بذلك ، تحتاج إلى فهم ما نقوم بتطويره بالضبط ، من الداخل والخارج ، ولا يمكن القيام بذلك في أنظمة متضخمة ومعقدة للغاية.
نفس الفوضى في البرمجة
يبدو أنه لا يوجد أحد آخر مهتم بالحلول عالية الجودة والسريعة والفعالة والمتينة والشاملة. حتى إذا كانت الحلول الفعالة معروفة منذ وقت طويل ، فإننا لا نزال نكافح في نفس المشاكل: إدارة الحزم ، أنظمة التجميع ، المترجمين ، تصميم اللغة ، IDEs.
أنظمة التجميع غير موثوقة بطبيعتها وتتطلب بشكل دوري التنظيف الكامل ، على الرغم من أنها تحتوي على جميع المعلومات المتعلقة بالإعاقة. لا شيء يمنع من جعل عملية التجميع موثوقة وقابلة للتنبؤ وقابلة للتكرار بنسبة 100٪. فقط لا أحد يعتقد أنه مهم. كانت الآلية الوقائية الوطنية في حالة "تعمل في بعض الأحيان" لسنوات عديدة.
@przemyslawdabek: , rm-rf node_modules
Node.js/JavaScript.
? , . « »? , - , , .

, , . , Hadoop
, .
, .
@rakhim: « » « », «, , ». «», : , .
Linux, Docker , , , . , . , « » Go. == .
Python , .
. Python — sudo? « » , . . , - ( ) ( , ,
):

.
— . , .
, , . , . AWS. . . , 20 . :
- — . , .
. . , , . — . , , .
, , . , .
,
.
.

? , 25 ? , . , .
— :
@sahrizv: 2014 — .
2016 — Docker, .
2018 — Kubernetes, Docker.
:
@dr_c0d3: 2000: 100 XML, «» EJB.
2018: 100 YAML, «» .
XML …
, .
. , . () , Android 350 ? , . , ? , , . : « , »? . .
. , , . (iPhone/iOS , Chrome ) , .
— , , . , . , . .
.
(
LMAX Disruptor,
SBE,
Aeron) , .
Xi , , .
, 500 000 . , , .
, . - . , , — , .
. . , . , . - — , , , , , , .
— . - . , . , . - .
:
— . , , . , , , , , ( !). , . , , . . « , ...» — !
, . , , . , , . , , , .