اسمحوا لي أن أستهل هذا المنشور بالقول إنه لا ينبغي لأي مبرمج أن يشعر بأنه مضطر لقراءة أي من هذه الأوراق. أدرجها لأنني أعتقد أنها توفر مجموعة كبيرة من المعلومات المفيدة والمثيرة للاهتمام بشكل عام من منظور علوم الكمبيوتر. ما تفعله بهذه المعلومات هو حقك ، بما في ذلك تجاهله تمامًا. بدلاً من ذلك ، تعلم ما تعتقد أنه مهم لما تحتاج إليه لإنجاز عملك ، والتعليم ، والاهتمامات ، إلخ.
مستوحاة من منشور رائع قام به Michael Feathers على طول مسار مشابه ، قمت بتأليف هذا المنشور باعتباره تكملة للنص الأصلي. بمعنى أنه بينما أتفق بالكامل تقريبًا مع خيارات السيد فيذر 1 ، فأنا أميل إلى الاعتقاد بأن خياراته موجهة نحو التصميم 2 و / أو الفلسفية. بأي حال من الأحوال ، هل استهين بهذا النهج ، بدلاً من ذلك أعتقد أن هناك مجالًا لقائمة أخرى أكثر تقنيًا بطبيعتها ، ولكن يبقى السؤال ، إلى أين نذهب بعد ذلك؟ في هذا المنشور سأقدم بعض التوجيهات بناءً على قراءاتي الخاصة. لا يُقصد من الأوراق التي تم اختيارها هنا أن تكون بمثابة قاعة مشاهير في سي إس ، ولكنها تأمل في تحقيق ما يلي:
جميع الأوراق متاحة مجانًا عبر الإنترنت (أي ليست مدفوعة الأجر)
أنها تقنية (في بعض الأحيان عالية جدا)
أنها تغطي مجموعة واسعة من المواضيع
شكل أساس المعرفة التي يجب أن يعرفها كل مبرمج عظيم ، وربما بالفعل
بسبب هذه القيود ، سأفتقد بعض الصحف الكبرى ، لكن بالنسبة للجزء الأكبر أعتقد أن هذه القائمة قوية. لا تتردد في عدم الاتفاق وتقديم البدائل في التعليقات.
خبير سيو
فيضان البصيرة من الكحول
المفاهيم الأساسية في لغات البرمجة (رابط إلى ورقة)
كريستوفر ستراشي
ربما المجموعة الأكثر نفوذا من مذكرات المحاضرة في تاريخ علوم الكمبيوتر. تم تعريف كل من القيم اليسرى واليمنى ، تعدد الأشكال المعلمي والمخصص في هذه الورقة. قد يشغل عقلك الكثير من المحتوى بالفعل ، ولكن من المذهل ملاحظة الوزن الهائل للموضوعات المتجمعة التي يتم تجميعها في مكان واحد.
سيو
لماذا مسائل البرمجة الوظيفية (رابط إلى ورقة)
جون هيوز
لقد وجدت هذه الورقة واضحة للغاية حول مزايا البرمجة الوظيفية مع ميزة إضافية تتمثل في إظهار أمثلة من الكود الجميل. يبدو أن هناك عددًا لا حصر له من الأوراق حول موضوع الكسل بالتيارات والمولدات ، لكنني لم أجد بعد علاجًا أفضل. أخيرًا ، كنت دائمًا جزءًا من "لماذا لماذا المسائل المتعلقة بالبرمجة الوظيفية" كمكمل لهذه الورقة.
أساس أكسيوماتي لبرمجة الكمبيوتر (رابط إلى ورقة)
بواسطة C. A. R. HOARE
جئت إلى هذه الورقة في وقت متأخر من حياتي المهنية ، لكن عندما وجدت أخيرًا ، شعرت وكأنني تعرضت للحافلة. في جوهر الورقة يكمن التأكيد التالي:
P {Q} R
أخذت تعني:
إذا كان التوكيد P صحيحًا قبل البدء في برنامج Q ، فسيكون التوكيد R صحيحًا عند اكتماله
حيث P شرط مسبق ، Q هي تنفيذ برنامج ، و R هي النتيجة.
بمعنى آخر ، طالما البرنامج / الوظيفة / الطريقة / إلخ. يتلقى مجموعة من المعلمات المطابقة لشروطها المسبقة ، ويضمن تنفيذها لتحقيق نتيجة جيدة التكوين. ألهمتني هذه الورقة لاستكشاف برمجة العقود في Clojure ، لكن الآثار الإثباتية التي تم التوصل إليها في ورقة Hoare كانت أعمق بكثير.
الوقت والساعات وترتيب الأحداث في نظام موزع (رابط إلى ورقة)
بقلم ليزلي لامبورت (1978)
كان لامبورت مؤثرًا جدًا في مجال الحساب الموزع لفترة طويلة جدًا وينبغي أن يكون أي من أوراقه تقريبًا حول الموضوع مثيرة للإعجاب. ومع ذلك ، فمن المحتمل أن يكون هذا البحث الخاص به هو أكثر فروع الدراسة تأثيرًا في مجال الحوسبة الموزعة والتي تم تحديدها بمفرده:
سبب ترتيب الأحداث في الأنظمة والبروتوكولات الموزعة
نهج آلة الدولة إلى التكرار
الجانب الأكثر إثارة للدهشة في هذه الورقة هو أنه بعد قراءتها ، قد تفكر في نفسك ، "حسنًا ، بالطبع يجب أن تعمل." قال جيم جراي ذات مرة إن هذه الورقة كانت واضحة ورائعة. أود أن أقول أنه لا يوجد مجاملة أعلى.
في فهم الأنواع ، وتجريد البيانات ، وتعدد الأشكال (رابط إلى ورقة)
بقلم لوكا كارديلي وبيتر فيغنر
لقد فكرت في الأصل في سرد نظرية ميلنر لتعدد الأشكال في البرمجة ، لكنني اعتقدت أن ورقة المسح ستكون أفضل. يجب أن أعترف أن قراءاتي لم تتعمق في استكشاف أنظمة الكتابة ، لذلك سيكون موضع تقدير كبير أي اقتراحات إضافية.
الوظائف التكرارية للتعبيرات الرمزية وحسابها بالآلة ، الجزء الأول (رابط إلى ورقة)
جون مكارثي
لقد أصبح من المبتذلة التوصية بورقة مكارثي التي تقدم LISP. لن أحسب هذا الهدف 10 ، لكنني سأكون مقصرا أن أعذره لأنه قراءة رائعة تستكمل بشكل جيد بدراسة التنفيذ البسيط لمواصفات مكارثي الأصلية (3).
مستوحاة من منشور رائع قام به Michael Feathers على طول مسار مشابه ، قمت بتأليف هذا المنشور باعتباره تكملة للنص الأصلي. بمعنى أنه بينما أتفق بالكامل تقريبًا مع خيارات السيد فيذر 1 ، فأنا أميل إلى الاعتقاد بأن خياراته موجهة نحو التصميم 2 و / أو الفلسفية. بأي حال من الأحوال ، هل استهين بهذا النهج ، بدلاً من ذلك أعتقد أن هناك مجالًا لقائمة أخرى أكثر تقنيًا بطبيعتها ، ولكن يبقى السؤال ، إلى أين نذهب بعد ذلك؟ في هذا المنشور سأقدم بعض التوجيهات بناءً على قراءاتي الخاصة. لا يُقصد من الأوراق التي تم اختيارها هنا أن تكون بمثابة قاعة مشاهير في سي إس ، ولكنها تأمل في تحقيق ما يلي:
جميع الأوراق متاحة مجانًا عبر الإنترنت (أي ليست مدفوعة الأجر)
أنها تقنية (في بعض الأحيان عالية جدا)
أنها تغطي مجموعة واسعة من المواضيع
شكل أساس المعرفة التي يجب أن يعرفها كل مبرمج عظيم ، وربما بالفعل
بسبب هذه القيود ، سأفتقد بعض الصحف الكبرى ، لكن بالنسبة للجزء الأكبر أعتقد أن هذه القائمة قوية. لا تتردد في عدم الاتفاق وتقديم البدائل في التعليقات.
خبير سيو
فيضان البصيرة من الكحول
المفاهيم الأساسية في لغات البرمجة (رابط إلى ورقة)
كريستوفر ستراشي
ربما المجموعة الأكثر نفوذا من مذكرات المحاضرة في تاريخ علوم الكمبيوتر. تم تعريف كل من القيم اليسرى واليمنى ، تعدد الأشكال المعلمي والمخصص في هذه الورقة. قد يشغل عقلك الكثير من المحتوى بالفعل ، ولكن من المذهل ملاحظة الوزن الهائل للموضوعات المتجمعة التي يتم تجميعها في مكان واحد.
سيو
لماذا مسائل البرمجة الوظيفية (رابط إلى ورقة)
جون هيوز
لقد وجدت هذه الورقة واضحة للغاية حول مزايا البرمجة الوظيفية مع ميزة إضافية تتمثل في إظهار أمثلة من الكود الجميل. يبدو أن هناك عددًا لا حصر له من الأوراق حول موضوع الكسل بالتيارات والمولدات ، لكنني لم أجد بعد علاجًا أفضل. أخيرًا ، كنت دائمًا جزءًا من "لماذا لماذا المسائل المتعلقة بالبرمجة الوظيفية" كمكمل لهذه الورقة.
أساس أكسيوماتي لبرمجة الكمبيوتر (رابط إلى ورقة)
بواسطة C. A. R. HOARE
جئت إلى هذه الورقة في وقت متأخر من حياتي المهنية ، لكن عندما وجدت أخيرًا ، شعرت وكأنني تعرضت للحافلة. في جوهر الورقة يكمن التأكيد التالي:
P {Q} R
أخذت تعني:
إذا كان التوكيد P صحيحًا قبل البدء في برنامج Q ، فسيكون التوكيد R صحيحًا عند اكتماله
حيث P شرط مسبق ، Q هي تنفيذ برنامج ، و R هي النتيجة.
بمعنى آخر ، طالما البرنامج / الوظيفة / الطريقة / إلخ. يتلقى مجموعة من المعلمات المطابقة لشروطها المسبقة ، ويضمن تنفيذها لتحقيق نتيجة جيدة التكوين. ألهمتني هذه الورقة لاستكشاف برمجة العقود في Clojure ، لكن الآثار الإثباتية التي تم التوصل إليها في ورقة Hoare كانت أعمق بكثير.
الوقت والساعات وترتيب الأحداث في نظام موزع (رابط إلى ورقة)
بقلم ليزلي لامبورت (1978)
كان لامبورت مؤثرًا جدًا في مجال الحساب الموزع لفترة طويلة جدًا وينبغي أن يكون أي من أوراقه تقريبًا حول الموضوع مثيرة للإعجاب. ومع ذلك ، فمن المحتمل أن يكون هذا البحث الخاص به هو أكثر فروع الدراسة تأثيرًا في مجال الحوسبة الموزعة والتي تم تحديدها بمفرده:
سبب ترتيب الأحداث في الأنظمة والبروتوكولات الموزعة
نهج آلة الدولة إلى التكرار
الجانب الأكثر إثارة للدهشة في هذه الورقة هو أنه بعد قراءتها ، قد تفكر في نفسك ، "حسنًا ، بالطبع يجب أن تعمل." قال جيم جراي ذات مرة إن هذه الورقة كانت واضحة ورائعة. أود أن أقول أنه لا يوجد مجاملة أعلى.
في فهم الأنواع ، وتجريد البيانات ، وتعدد الأشكال (رابط إلى ورقة)
بقلم لوكا كارديلي وبيتر فيغنر
لقد فكرت في الأصل في سرد نظرية ميلنر لتعدد الأشكال في البرمجة ، لكنني اعتقدت أن ورقة المسح ستكون أفضل. يجب أن أعترف أن قراءاتي لم تتعمق في استكشاف أنظمة الكتابة ، لذلك سيكون موضع تقدير كبير أي اقتراحات إضافية.
الوظائف التكرارية للتعبيرات الرمزية وحسابها بالآلة ، الجزء الأول (رابط إلى ورقة)
جون مكارثي
لقد أصبح من المبتذلة التوصية بورقة مكارثي التي تقدم LISP. لن أحسب هذا الهدف 10 ، لكنني سأكون مقصرا أن أعذره لأنه قراءة رائعة تستكمل بشكل جيد بدراسة التنفيذ البسيط لمواصفات مكارثي الأصلية (3).