CALM/arwiki huggingface dataset:
العديد من المشاريع مفتوحة المصدر أنشأت قوانين لتصميم الكود. ومن أشهرهم أسلوب GNU، وأسلوب BSD. وأعظم فرق بين الاثنين هو موقع القوس : في أسلوب GNU، فتح وغلق الأقواس على خطوط منفردة، بنفس الفراغ. بينما أسلوب BSD يضع قوس منفتح بنهاية السطر السابق، والقوس المنغلق يمكن وضع else بعده. كما يتغير موقع وحجم الفراغ.
مثال على تنسيق الكود وتجميله.
المثال التالي يبين بعض هياكل C النموذجية وكيف تنسقهم قوانين أسلوب المسافة البادئة. وبدون أي تنسيق إطلاقا، يبدو كالأسفل:
int foo(int k) { if (k &lt; 1 || k &gt; 2) { printf("out of range\n");
printf("this function requires a value of 1 or 2\n"); } else {
printf("Switching\n"); switch (k) { case 1: printf("1\n"); break; case
ينتج برنامج GNU للمسافة البادئة المعطى التالي عندما يُطلب منه ترك مسافة طبقا لقوانين GNU:
foo (int k)
if (k &lt; 1 || k &gt; 2)
printf ("out of range\n");
printf ("this function requires a value of 1 or 2\n");
printf ("Switching\n");
switch (k)
case 1:
printf ("1\n");
case 2:
printf ("2\n");
وينتج المعطى التالي عند التنسيق طبقا لقوانين BSD:
foo(int k)
if (k &lt; 1 || k &gt; 2) {
printf("out of range\n");
printf("this function requires a value of 1 or 2\n");
printf("Switching\n");
switch (k) {
printf("1\n");
printf("2\n");
تنسيق النص.
يعتبر تنسيق النص شكل عام من الطباعة الأنيقة.
يعد روبرت سيسيل مارتن، والمعروف باسم «العم بوب»، مؤلف واستشاري برمجية حاسوب أمريكي. وكان مارتن قد تخصص في مجال البرمجيات منذ عام 1970 وعمل كاستشاري برمجيات دولي منذ عام 1990. وفي عام 2001، افتتح اجتماع المجموعة المؤسسة لطرق التطوير البرمجي السريع من تقنيات البرمجة القصوى. كما يعد كذلك أحد الأعضاء الرواد في حركة الحرف البرمجية.
هو كذلك مؤسس ورئيس شركة Object Mentor Inc،
وهي عبارة عن مجموعة من المستشارين الذين يقدمون النصح لعملائهم في سي++ وجافا وبرمجة كائنية التوجه ونماذج التصميم ولغة موحدة للنمذجة والطرق المنهجية السريعة والبرمجة القصوى.
عمل من عام 1996 لعام 1999 كرئيس تحرير لمجلة C++ Report. وفي عام 2002، ألّف التطوير البرمجي السريع: المبادئ والنماذج والممارسات، والذي يقدم مشورة عملية حول التصميم كائني التوجه والتطوير ضمن فريق سريع الأداء. كما نشر عدد من الكتب والمقالات حول الطرق المنهجية للبرامج والبرمجة.
أسلوب البرمجة هو عبارة عن مجموعة قواعد أو إرشادات تستخدم عند كتابة كود مصدري برنامج (حاسوب). وغالبا ما يتم الإدعاء بأن إتباع أسلوب معين في البرمجة يساعد مبرمج على قراءة وفهم الشفرة المصدرية المطابقة للأسلوب ومساعدتهم على تجنب تقديم الأخطاء.
ومن الأعمال الكلاسيكية في هذا الموضوع هو كتاب عناصر أسلوب البرمجة والذي كتب في السبعينات وفسر هذه الأساليب بأمثلة من لغات فورتران وبي إل وان التي كانت سائدة في هذا الوقت.
إن لغة البرمجة التي تستخدم لبرنامج معين يمكن اشتقاقها من عادات التشفير الخاصة بشركة أو مؤسسة حاسوبية أخرى بالإضافة إلى مفضلات المؤلف بالنسبة للأكواد. وغالبا ما يتم تصميم أساليب البرمجة لغة برمجة بعينها (أو عائلة لغات): ويعتبر الأسلوب أمرا جيدا للشفرة المصدرية الخاصة بلغة السي وربما لا تكون مناسبة للشفرة المصدرية بيسيك... الخ. ومع ذلك فيتم تطبيق بعض القواعد للعديد من اللغات.
عناصر الأسلوب الجيد.
يعد الأسلوب الجيد أمرا موضوعيا يصعب تحديده. ومع ذلك فهناك عدة عناصر شائعة في مجموعة كبيرة من أساليب البرمجة والتي تتضمن الشكل العام للشفرة المصدرية بما في ذلك تحديد المسافة البادئة واستخدام المساحات البيضاء حول المشغلات والكلمات الرئيسية وكتابة بعض الكلمات بحرف كبير في البداية وخاصة الكلمات الرئيسية والأسماء المختلفة وأسلوب وتهجئة علامات التعريف الخاصة بالمستخدم مثل الوظيفة والإجراء والأسماء المتنوعة واستخدام أسلوب التعليقات.
هيئة الشفرة.
تتعامل أساليب البرمجة بشكل كبير مع الأشكال المرئية للشفرة المصدرية بهدف الحصول على جهود معرفية أقل بشرية لاستخراج المعلومات الخاصة بالبرنامج. ولطالما كان البرنامج متوافرا بحيث يعمل على صياغة وتنسيق الشفرة المصدرية تلقائيا ليترك المجال للمبرمجين للتركيز على التسمية والمنطق والتقنيات العالية. وكنقطة عملية يعد استخدام الكمبيوتر لتنسيق الشفرة المصدرية أمرا يوفر الوقت ومن الممكن أن يقوي المعايير المنتشرة بالشركة من دون جدل.
المسافات البادئة.
يساعد أسلوب المسافة البادئة في تحديد تدفق السيطرة وبلوكات الكود. وفي بعض لغات البرمجة يستخدم أسلوب المسافة البادئة في تعيين البلوكات المنطقية للشفرة ويعد الاستخدام الصحيح للمسافة البادئة في هذه الحالة أكثر من مجرد أسلوب. بلغة أخرى لا تؤثر المسافات البادئة والمساحات البيضاء في الوظيفة بالرغم من أن المسافات البادئة الصحيحة والمنطقية تجعل الشفرة أكثر قابلية للقراءة. قارن:
if (hours &lt; 24 &amp;&amp; minutes &lt; 60 &amp;&amp; seconds &lt; 60) {
if (hours &lt; 24 &amp;&amp; minutes &lt; 60 &amp;&amp; seconds &lt; 60)
مع شيء مثل:
if ( hours&lt;
24 &amp;&amp; minutes&lt;
60 &amp;&amp; seconds&lt;
60)
أول نموذجان يكونان غالبا أسهل في القراءة لأنها تحمل مسافات بادئة بأسلوب ثابت (أسلوب " الفقرة المتدلية"). ويعد أسلوب المسافة البادئة أسلوبا مفيدا بشكل خاص عند التعامل مع مقومات متداخلة متعددة.
موديوليك ModuLiq.
يجتمع أسلوب المسافة البادئة موديوليك زيرو مع عائدات الحوامل بدلا من المسافات البادئة. قارن كل ما سبق بما يلي:
البايثون Python.
يستخدم بايثون المسافة البادئة للإشارة إلى هياكل التحكم، لذا فالمسافات البادئة الصحيحة مطلوبة. وبفعل ذلك تكون الحاجة لوضع أقواس مع قوس (ترقيم) (مثل {... }) يتم إزالته. على الجانب الآخر، فإن النسخ واللصق اليدوي لشفرة بايثون يمكن أن يؤدي على بعض المشاكل لأن مستوى المسافة البادئة للشفرة الملصوقة يمكن ألا يكون نفس مستوى المسافة البادئة للخط الحالي. مثل هذا التنسيق يمكن أن يكون القيام به يدويا مرهقا ولكن بعض محرر نصوص وبيئة تطوير متكاملة يتمتعون بسمات خاصة للقيام بذلك تلقائيا. كما تتواجد بعض المشاكل أيضا حين يمكن جعل البايثون غير قابلة للاستخدام حين تنشر في أحد المنتديات أو الصفحات الإليكترونية التي تزيل المساحات البيضاء بالرغم من أنه من الممكن تجنب هذه المشكلة حيثما أمكن من أجل إدراج الشفرة في بطاقات تحتفظ بمساحات بيضاء مثل"&lt;pre&gt;... &lt;/pre&gt;" (for لغة ترميز النص الفائق), "[code]"... "[/code]" (for bbcode), إلخ.
الهاسكيل Haskel.
تتمتع لغة الهاسكيل أيضا بالدور الجانبي الذي يجعل المسافات البادئة تحدد البلوكات، ومع ذلك فعلى عكس البايثون، لا يعد وضع المسافات البادئة أمرا إجباريا في الهاسكيل- غلا أن الأقواس المجعدة والفواصل المنقوطة يمكن استخدامها بدلا منها (من حين لآخر).
المحاذاة العمودية.
غالبا ما يكون من المفيد محاذاة العناصر المتشابهة بصورة عمودية لجعل تلك الفيروسات التي تنشأ عن الطباعة أكثر وضوحا. قارن:
$search = array('a', 'b', 'c', 'd', 'e');
$replacement = array('foo', 'bar', 'baz', 'quux');
// Another example:
$value = 0;
$anothervalue = 1;
$yetanothervalue = 2;
مع:
// مثال آخر:
المثال السابق يوضح أمرين بشكل بديهي لم تكونا واضحين في المثال الأسبق:
ومن بين الأمور الجدلية ضد المحاذاة العمودية:
المسافات.
في تلك المواقف التي تتطلب وجود مسافات بيضاء فإن القواعد النحوية لمعظم لغات التنسيق الحر لا تهتم بالكم الذي يظهر. وعادة ما يستخدم الأسلوب المتعلق بالمساحات البيضاء لتعزيز القابلية للقراءة. ولا يوجد حاليا وقائع صلبة معروفة (استنتاجات من دراسات) حول كيفي يمكن أن تكون المسافات البيضاء مقروءة بصورة سهلة.
على سبيل المثال، قارن الأمثلة التالية المتكافئة في تركيبها والخاصة بشفرة السي.
for(i=0;i&lt;10;++i){
printf("%d",i*i+i);
for (i=0; i&lt;10; ++i) {
printf("%d", i*i+i);
for (i = 0; i &lt; 10; ++i) {
printf ("%d", i * i + i);
for(i = 0; i &lt; 10; ++i) {
printf("%d", i * i + i);
الجدولة.
استخدام الجدولة لخلق مساحات بيضاء يشير غلى بعض المسائل الخاصة حين لا يتم الانتباه بصورة كافية لأن موضع نقطة الجدولة يمكن أن يختلف تبعا للأدوات التي يتم استخدامها وتبعا لمفضلات المستخدم نفسه.
مثال على ذلك، نجد أن أحد المبرمجين يفضلون وقفات الجدولة المكونة من أربع وقفات وقد تم تثبيت مجموعة أدواته على هذه الوضعية ويستعين بها لتنسيق شفرته.
int ix; // Index to scan array
long sum; // Accumulator for sum
بينما يفضل مبرمج آخر وقفات الجدولة المكونة من ثماني ويتم تثبيت أدواته على هذه الوضعية. وحين يفحص الشفرة، فربما يجد من الصعب قراءتها.
ومن الحلول التي تستخدم بصورة كبيرة في هذا الموضوع ربما تتضمن منع استخدام الجدولة للمحاذاة أو قواعد حول كيفية وضع وقفات الجدولة. لاحظ أن علامات الجدولة تعمل بصورة أفضل حين يتم استخدامها بشكل ثابت، وتكون مقيدة بالمسافات البادئة المنطقية ولا تستخدم للمحاذاة:
class MyClass {
int foobar(int qux, // first parameter
int quux); // second parameter
int foobar2(int qux, // first parameter
int quux, // second parameter
int quuux); // third parameter
يعد التضمين النبضي المُرمز هو أحد الوسائل المستخدمة لتحويل عينات الإشارات التناظرية إلى إشارات رقمية (ديجيتال)، وقد ابتكر هذه الطريقة (أليك ريفز) في عام 1937، وتُعد هذه الطريقة هي المُستخدمة بشكل واسع في نقل المواد السمعية الرقمية في أجهزة الكمبيوتر وأقراص الـ Blu-ray والأقراص المدمجة العادية والـ DVD، هذا إلى جانب استعمالاتها الأخرى في أنظمة الهواتف الرقمية. وإشارات التضمين النبضي الشفري (PCM) عبارة عن تمثيل رقمي للإشارات التناظرية، وفيها يتم استخلاص المعلومات من الإشارة المستمرة عن طريق تقطيع هذه الإشارة إلى عينات مأخوذة على أزمنة قصيرة جداً ومنتظمة، حيث يتم تكميم quantization كل عيّنة لأقرب قيمة لها ضمن نطاق من الخطوات الرقمية.
ولتيار الإشارة المعدّل خاصيتان تحددان دقته وتماثل ما يحمله من معلومات مع الإشارة التناظرية الأصلية: أما الخاصية الأولى فهي معدل التعيين sampling rate، وهو عدد المرات التي تؤخذ فيها العينات في الثانية الواحدة؛ وعمق البتات bit depth، والذي يحدد عدد القيم الرقمية الممكنة التي تستطيع كل عيّنة أن تأخذها.
في الشكل الموضح، يتم أخذ وتكميم العيّنات من موجة الجيب sine wave (المنحنى الأحمر) لتعديل إشارتها إلى إشارة رقمية. وتُؤخذ العينات بتقطيع الإشارة على أزمنة قصيرة جداً ومنتظمة، تظهر على هيئة نقاط على المحور السيني. ومع كل عيّنة، تُؤخذ إحدى القيم المتغيرة (التي تمثلها النقاط الموزعة على المحور السيني) بناء على خوارزمية معينة، وهذا ما يؤدي لتقطيع الإشارة الداخلة بشكل كامل (المنطقة المظللة) لأجزاء منفصلة يسهل تشفيرها كبيانات رقمية من أجل تخزينها أو إرسالها.فبالنسبة لمثال موجة الجيب على اليمين، نستطيع التحقق من أن القيم المكمّمة عند لحظات التعيين هي 7 ، 9، 11، 12، 13، 14، 14، 15، 15، 15، 14، الخ. وعند تشفير هذه القيم إلى أرقام ثنائية binary numbers، ستنتج المجموعة التالية من الكتل الرباعية nibbles:
00111 (23×0+22×1+21×1+20×1=0+4+2+1=7), 1001, 1011, 1100, 1101, 1110, 1110, 1111, 1111, 1111, 1110,إلخ.
ويمكن فيما بعد معالجة هذه القيم الرقمية أو تحليلها بواسطة معالج إشارات رقمي (DSP) خاص أو معالج إشارات عمومي. كما يمكن مضاعفة عدة دفقات من الإشارات النبضية المعدّلة إلى تدفقات بيانات مجمعة أكبر حجمًا، وذلك بصفة عامة لنقل عدة تدفقات من خلال رابط مادي (فيزيائي) واحد. ومن الوسائل المستخدمة في ذلك تقنية التنضيد بالتقسيم الزمني time-division multiplexing (أو TDM)، وهي تُستخدم على نطاق واسع، خاصة في نظم الهواتف العامة الحديثة. وثمة تقنية أخرى يطلق عليها اسم التنضيد بالتقسيم الترددي frequency-division multiplexing، حيث تُعطى الإشارة تردد معين ينتمي لطيف من الترددات، ثم يتم نقلها إلى جانب إشارات أخرى داخل الطيف. وفي الوقت نفسه، يُستخدم التنضيد بالتقسيم الترددي (TDM) بشكل أكثر انتشارًا من التنضيد بالتقسيم الزمني FDM وذلك لتوافقيته الطبيعية مع نظم الاتصالات الرقمية ومُلائمته بصفة عامة لمتطلبات التقليل في السعات bandwidth.
وثمة طرق كثيرة لإنشاء جهاز حقيقي ينجز هذه المهمة. وفي النظم الواقعية، من الشائع تنفيذ مثل هذه الأجهزة على الدوائر المتكاملة الأحادية integrated circuit والتي تفتقد فقط الساعة (المؤقّتات) الضرورية لإجراء عملية التعيين (أخذ العينات) ويطلق على هذا الجهاز اسم (المحول التناظري الرقمي ADC). وتتضمن مخرجات هذه الأجهزة تمثيلاً ثنائيًا للمدخلات متى تم حثها بواسطة إشارة ساعة، حيث يقوم حينئذ أحد المعالجات بقراءتها.
فك التضمين.
من أجل استخلاص المخرجات من عيّنات البيانات، يتم تطبيق عملية التضمين بشكل عكسي. فبعد مرور كل فترة تعيين، تتم قراءة القيمة التالية ثم تُحول إحدى الإشارات إلى القيمة الجديدة. ونتيجة لهذه الانتقالات، فإن الإشارة ستتضمن قدرًا كبيرًا من الطاقة عالية التردد. ولتحقيق السلاسة في الإشارات وإزالة التداخلات الترددية غير المرغوبة، يتم تمرير الإشارة من خلال مرشحات تناظرية LPF تقوم بثبيط الطاقة خارج نطاق الترددات المتوقع (أي الأكبر من تردد نايكيست Nyquist وهو formula_1). وتستخدم بعض الأنظمة الترشيح الرقمي digital filtering للتخلص من هذه التداخلات، وتُحوّل الإشارة من رقمية إلى تناظرية عند معدل تعيين أكبر بحيث يكون المرشح التناظري المطلوب لمنع الشوشرة والتداخل أكثر بساطة. وفي بعض النظم، لا تتم أي عمليات ترشيح؛ فنظرًا لأنه من المستحيل إعادة إنتاج أي إشارة بسعة لا نهائية، فإن فقدان الإشارات الضمنية في النظام يقوم بالتعويض عن الإشارات الصنعية artifacts – حيث يمكن القول ببساطة أن النظام لا يحتاج لكثير من الدقة. وتشير نظرية التعيين sampling theorem إلى أن أجهزة التضمين النبضي PCM بوسعها عندما يتوافر تردد تعيين أكبر بشكل كاف من تردد الإشارة الداخلة، أن تعمل بدون إحداث أي تشويهات كبيرة ضمن نطاق تردداتها المُصمم.
وتتشابه البنية الإلكترونية المستخدمة في إنتاج الإشارات التناظرية الدقيقة من البيانات المنفصلة مع البنية المستخدمة في الإشارات الرقمية. وهذه الأجهزة عبارة عن محولات للإشارات الرقمية إلى تناظرية DACs، وتعمل بشكل مشابه للمحولات من التناظري إلى الرقمي ADCs. وهي تقوم بإنتاج فولتية أو تيار (اعتمادًا على النوع) يمثل القيمة الموجودة في مُدخلاتها، ثم يتم بعد ذلك ترشيح وتضخيم المخرجات من أجل استخدامها.
ثمة مصدرين للضعف في أي نظام للتعديل النبضي الشفري:
ونظرًا لاعتماد العيّنات على عامل الزمن time، فإننا نجد أن توافر ساعة توقيت دقيقة أمر ضروري من أجل الاستخلاص الدقيق للإشارة. فإذا لم تكن ساعة التشفير أو فك التشفير مستقرة، فإن انجراف التردد frequency drift سوف يؤثر بشكل مباشر على جودة مخرجات الجهاز. ولا تمثل الاختلافات الطفيفة بين ترددات ساعة التشفير وساعة فك الشفرة أي مشكلات كبيرة؛ ذلك أن الأخطاء الصغيرة المستقرة لا تكون قابلة للملاحظة. ويصبح خطأ الساعة مشكلة كبيرة فقط إذا لم تكن الساعة مستقرة. حيث تتسبب أي ساعة منجرفة، حتى مع الأخطاء الصغيرة نسبيًا، في حدوث تشوهات واضحة للغاية في الإشارات الصوتية والمرئية.
معلومات إضافية:
تتطلب بيانات التضمين النبضي الشفري الخاصة بإشارة معينة ذات ترددات ساعة غير قابلة للتأثر وجود ساعة توقيت دقيقة عند الطرف التشفيري لضمان استخدام كافة البيانات في تيار مستمر بدون أن يحدث نقص أو تكدس في امتلاء مخزن الإشارات المؤقت. وأي تفاوت في الترددات سوف يكون مسموعًا عند المخرج نظرًا لأن عدد العينات لكل فترة زمنية لا يمكن أن يكون صحيحًا. ويمكن توجيه سرعة البيانات في أي قرص مدمج من خلال سيرفو servo يقوم بضبط سرعة دوران القرص: وهنا تكون ساعة المخرجات هي الساعة الرئيسية. أما بالنسبة لكافة الأنظمة "الرئيسية الخارجية" مثل DAB، يجب تشفير تيار المخرجات بساعة متجددة ومتزامنة بشكل دقيق. وعندما يختلف معدل التعيين المرغوب للمخرجات عن ساعة تدفق البيانات الداخلة يكون من اللازم إدخال محول لمعدل التعيين في السلسلة لتحويل العينات إلى حقل الساعة الجديدة.
التحويل الرقمي كجزء من عملية التضمين النبضي الشفري.
في النظام التقليدي للتعديل النبضي الشفري، قد يتم معالجة الإشارة التناظرية (من خلال ضغط السعة amplitude مثلاً) قبل أن يتم تحويلها رقمياً. وبمجرد إتمام التحويل الرقمي للإشارة، يتم إخضاع إشارة التضمين النبضي في العادة لمزيد من عمليات المعالجة (مثل الضغط الرقمي للبيانات).
ويُعرف التضمين النبضي الشفري من خلال التكميم الخطي بـ "التضمين الخطي").
Linear PCM.
وبعض أنواع التضمين النبضي الشفري تجمع بين معالجة الإشارة وبين التشفير. وكانت النسخ الأقدم من هذه الأنظمة تطبق عملية المعالجة في الحقل التناظري كجزء من عملية التحويل من تناظري إلى رقمي A/D؛ أما التطبيقات الأحدث فتقوم بنفس الوظيفة في الحقل الرقمي. وقد توقف العمل بهذه التقنيات البسيطة نتيجة لنشوء التقنيات العصرية للضغط الصوتي audio compression القائم على التحويل.
وفي نظم الاتصالات الهاتفية، يتم تشفير الإشارة الصوتية المعيارية للمكالمة التليفونية الواحدة إلى 8000 عيّنة تناظرية في الثانية، كل منها مؤلف من ثمانية خانات ثنائية 8 bits، وبما يعطي في النهاية إشارة رقمية بقيمة 64 كيلوبيت/ثانية تعرف بـ DS0. ويكون التشفير الافتراضي لضغط الإشارة على DS0 إما μ-law (mu-law) (في [[أمريكا الشمالية]] و[[اليابان]]) أو A-law (في [[أوروبا]] ومعظم باقي دول العالم). وهناك أنظمة ضغط [[لوغاريتم]]ية يتم فيها ربط رقم العيّنة الخطية للـ PCM ذات الـ 12 أو 13 خانة ثنائية 12 or 13-bit بأحد القيم ذات الثمانية خانات ثنائية 8-bit. وتضع المواصفة الدولية G.711 مواصفات هذا النظام. وقد تم التخلى عن إحدى المقترحات البديلة التي تتضمن تمثيل النقطة العائمة floating point representation، والتي قيمة الجزء العشري فيها خمس بتات mantissa 5-bit والجذر ثلاث بتات 3-bit radix.
ومتى كانت تكلفة الدوائر مرتفعة وخسارة جودة الصوت مقبولة، قد يُلجأ إلى المزيد من ضغط الإشارة الصوتية. وهنا يستخدم لوغاريتم الـ ADPCM للربط الدالّي لسلسلة من عينات 8-bit µ-law أو A-law PCM إلى سلسلة من عينات الـ ADPCM رباعية الخانات الثنائية. وبهذه الطريقة، تتم مضاعفة سعة الخط. ونجد تفصيلاً بهذه التقنية في المواصفة G.726.
وقد اكتشف لاحقاً إمكانية تحقيق المزيد من الضغط، ونشرت مواصفات إضافية في هذا الصدد. وبعض هذه المواصفات الدولية تصف الأنظمة والأفكار التي تغطيها براءات اختراعات خاصة ومن ثم فإن استخدام هذه المواصفات يستلزم سداد المستحقات لأصحاب هذه البراءات.
وتُستخدم بعض تقنيات الـ ADPCM في نقل الصوت عبر الإنترنت Voice over IP.
التشفير بهدف نقل الإشارة.
يمكن للتعديل النبضي الشفري أن يكون بنظام العودة إلى الصفر return-to-zero (RZ) أو بنظام عدم العودة إلى الصفر non-return-to-zero (NRZ). ولكي تتم مزامنة أي نظام عدم عودة إلى الصفر باستخدام المعلومات الموجودة داخل النطاق in-band، ينبغي ألا تكون هناك تتابعات طويلة من الرموز المتشابهة، مثل الآحاد أو الأصفار. وفي أنظمة التضمين النبضي الشفري الثنائية، تُسمى كثافة [[رموز|الرموز]] -1 "1-symbols" باسم "كثافة الآحاد" ones-density..
ويتم التحكم في كثافة الآحاد باستخدام تقنيات التشفير المُسبق precoding مثل التشفير محدد الطول والسعة run-length limited، حيث يتم توسيع شفرة التضمين النبضي الشفري PCM إلى شفرة أطول قليلاً مع وضع تقييد مضمون على كثافة الآحاد قبل إجراء عملية التضمين إلى القناة. وفي حالات أخرى، تتم إضافة بتات تأطير framing bits إضافية إلى تدفق البيانات، وهو ما يضمن تحويلات رمزية دورية على الأقل.
ومن الطرق الأخرى المُستخدمة في التحكم في كثافة الآحاد استخدام جهاز التشويش كثير الحدود scrambler polynomial على البيانات الخام والذي يقوم بتحويل البيانات إلى شكل شبه عشوائي، ولكن يتم استعادة البيانات الخام مرة أخرى من خلال عكس تأثير عملية التشويش. وفي هذه الحالة، يمكن أن تظهر أسطر طويلة من الأصفار أو الآحاد في خارج الإشارة، ولكنها تظل بعيدة الاحتمال بما يكفي لأن تقع ضمن حدود السماحية الهندسية الطبيعية.
وفي حالات أخرى، تكون قيمة [[التيار المستمر]] DC طويلة الأجل للإشارة المعدّلة مهمة، ذلك أن مراكمة عملية معادلة التيار المستمر DC offset سوف يؤدي لحرْف دوائر الكشّاف عن نطاقها التشغيلي. وفي هذه الحالة يتم اتخاذ إجراءات خاصة لرصد تأثير التعادل التراكمي للتيار المستمر، ولتعديل الشفرات عند الضرورة لجعل عملية التعادل تعود دائمًا إلى الصفر.
والكثير من هذه الشفرات هي عبارة عن شفرات ثنائية القطب bipolar، حيث تكون النبضات إما [[موجب]]ة أو سالبة أو غائبة. وفي شفرة عكس العلامة المتناوب alternate mark inversion النموذجية، تتناوب قيمة النبضات اللاصفرية بين العلامتين الموجبة و[[السالب]]ة. وقد يتم انتهاك هذه القواعد من أجل توليد رموز خاصة لاستخدامها في التأطير أو غيرها من الأغراض الخاصة.
تاريخ التضمين النبضي الشفري.
في تاريخ الاتصالات الكهربائية، كان من أولى الأسباب الداعية لتعيين الإشارات signal sampling هو تنضيد العينات من مصادر تلغرافية مختلف، ونقلها على سلك تلغرافي أوحد. وقد نقل التنضيد بالتقسيم الزمني (TDM) للاستخدام في مطلع عام 1853، على يد المخترع الأمريكي (موسيز ج. فارمر). وقد استخدم المهندس الكهربائي (و. م. ماينر) في عام 1903 الموصّل الكهروميكانيكي commutator للتنضيد بالتقسيم الزمني للإشارات [[تلغراف|التلغرافية]] المتعددة، كما قام بتطبيق هذه التقنية كذلك على الاتصالات الهاتفية. وقد استطاع الحصول على أصوات حديث مفهومة من القنوات التي تم تعيينها بمعدل يعلو على 3500-4300 [[هرتز]] : أما عند المستويات الأقل من ذلك، فكانت الجودة غير مرضية. كان هذا هو التنضيد بالتقسيم الزمني، ولكنه كان أقرب إلى نظام التضمين بنبضات [[السعة]] pulse-amplitude modulation (PAM) عنه إلى التضمين النبضي الشفري (PCM).
وفي عام 1926، اخترع ([[بول م. ريني]]) من شركة ([[ويسترن إليكتريك]]) جهاز [[الفاكسيميلي]] والذي نقل إشارته باستخدام تعديل نبضي تشفيري خماسي الخانات الثنائية 5-bit، وتم التشفير باستخدام محوّل بصري ميكانيكي للإشارات التناظرية إلى رقمي. بيد أن الآلة الجديدة لم تدخل مجال الإنتاج التجاري. وقد فكر المهندس البريطاني ([[أليك ريفز]]) في استخدام التضمين النبضي الشفري في توصيل الصوت في عام 1937 أثناء عمله لصالح [[مؤسسة الهاتف والتلغراف الدولية]] (ITT Corporation) في [[فرنسا]]. وقد وصف النظرية ومزاياها، وبدون أن يترتب على ذلك أي استخدام تطبيقي. وقد تقدم (ريفز) لنيل [[براءة اختراع]] فرنسية عام 1938، وقد منح براءة اختراع أمريكية في عام 1943.
كانت أول عملية نقل للمحادثات قد تمت بواسطة تقنيات رقمية من خلال جهاز التشفير SIGSALY vocoder التي استخدم في الاتصالات عالية المستوى بين دول الحلفاء خلال الحرب العالمية الثانية منذ عام 1943. وفي عام 1943، أصبح الباحثون في معامل (بيل لابس) الذين صمموا نظام SIGSALY على وعي بالانتشار الذي حظي به نظام التشفير الثنائي الخاصة بالتضمين النبضي الشفري على نحو ما طرحه (أليك ريفز). وفي عام 1949، ولصالح نظام DATAR الخاص ب[[البحرية الكندية]]، قامت شركة Ferranti Canada ببناء نظام راديو يقوم على التضمين النبضي الشفري، وكان قادرًا على نقل بيانات الرادار الرقمية على المسافات الطويلة.
وقد استخدم التضمين النبضي الشفري في أواخر الأربعينات ومطلع الخمسينات أنبوب تشفير يعمل بآشعة [[الكاثود]] بإلكترود صفيحي يتضمن ثقوب تشفيرية. وكما هو الحال مع مرسام الذبذبات oscilloscope، كان يتم دفع الشعاع أفقيًا عند معدل التعيين فيما كان يتم التحكم في الانحراف الرأسي من خلال الإشارة التناظرية الداخلة، وبما يجعل الشعاع يمر خلال أجزاء أعلى أو أخفض من الصفيحة المثقوبة. وكانت الصفيحة تقوم بجمع أو تمرير الشعاع، ومنتجة تباينات في الشفرة الثنائية، بمعدل بتة واحدة في كل مرة. وبدلاً من النظام الثنائي الطبيعي، كانت شبكة أنبوب (جودال) تثقب لإنتاج (شفرة جراي) خالية من العيوب الفنية، وكانت تنتج كافة البتات بشكل متزامن باستخدام شعاع مروحي بدلاً من شعاع ماسح.
وكانت جمعية التميز الوطنية للمخترعين قد قامت بتكريم كل من ([[برنارد م. أوليفر]])
و([[كلود شانون]])
لاختراعهما التضمين النبضي الشفري،
على النحو الموصوف في البراءة التي تحمل العنوان ‘نظام اتصالات يستخدم التضمين النبضي الشفري’، ورقمها 2801281 والتي قدمت في 1946 و 1952، ومنحت في عام 1956. وقد قدم مخترع آخر وهو ([[جون ر. بيرس]]) طلب لبراءة اختراع أخرى تحمل نفس العنوان في عام 1945، وصدرت في عام 1948: وهي تحمل الرقم 2437707 ([[الولايات المتحدة]]). وقد نشر ثلاثتهم كتاب "[[فلسفة التضمين النبضي الشفري]]" في عام 1948.
وقد جرى استخدام التضمين النبضي الشفري في [[اليابان]] من قبل (دينون) في عام 1972 من أجل تطوير وإنتاج التسجيلات الفونوغرافية التناظرية، وذلك باستخدام مسجل بشريط رباعي الإشارة (2 بوصة) وذلك لنقل هذه التسجيلات، ولكن لم يجر تطويرها إلى منتج استهلاكي.
تشير كلمة (نبضة) في المصطلح (التضمين النبضي الشفري) إلى "النبضات" الموجودة في خط النقل، وهي ربما تكون إحدى التبعات الطبيعية لهذه التقنية والتي تطورت إلى جانب طريقتين تناظريتين أخرى تين وهما تعديل عرض النبضات pulse-width modulation وتعديل موقع النبضات pulse-position modulation، وفيها يتم تمثيل المعلومات المقرر تشفيرها بواسطة نبضات إشارية منفصلة تكون متباينة العرض أو الموقع على التوالي. وفي هذا الصدد، نجد أن التضمين النبضي الشفري لا يشبه هذه الأنواع الأخرى من تشفير الإشارات إلا في مناح قليلة، بيد أن كلها تشترك في قابليتها للاستخدام في التنضيد بالتقسيم الزمني، ويتم تمثيل الأرقام الثنائية لشفرات التضمين النبضي الشفري كنبضات كهربائية. ويُطلق على الجهاز الذي يجري عملية التشفير وفك الشفرة في دائرة هاتفية اسم codec.
– ITU-T standard for audio . It is primarily used in telephony.
(SQNR) – One method of measuring quantization error.
[[تصنيف:أنساق ملفات الحاسوب]]
[[تصنيف:إرسال متعدد]]
[[تصنيف:إشارات الهاتف]]
[[تصنيف:صوت رقمي]]
[[تصنيف:مرماز صوتي]]
في حاسوب وتقنية يُستخدم مصطلح مدير البريد ليُشير إلي مدير نظام خادم البريد. لكل نطاق تقريباً عنوان بريد إلكتروني postmaster@example.com حيث يتم إرسال أخطاء معالجة بريد إلكتروني إليه. يتضح أن رسائل البريد الالكتروني الخاطئة الناتجة عن خوادم البريد عميل الإرسال تُرسل دوماً إلي عنوان مدير البريد.
إن كل نطاق يدعم بروتوكول إرسال البريد البسيط للبريد الإلكتروني لابد أن يستخدم بينما كان يُستخدم من قبل في عام 1982 حتي يكون هناك عنوان لمدير البريد. يحتفظ موقع rfc-ignorant.org الإلكتروني بقائمة بالنطاقات التي لا تعتمد علي RFC وفقاً لهذا الشرط.
نقلاً عن الطلب الخاص للتعليقات RFC:
أي نظام يشتمل علي خادم إرسال البريد البسيط لدعم ترحيل أو تسليم البريد من الضرورة أن يدعم صندوق البريد المحفوظ "مدير البريد" باعتباره اسم محلي غير حساس لحالة الأحرف. لا يعتبر هذا العنوان لمدير البريد ضروري للغاية في حالة ما إذا كان الخادم دائما ما يعيد 554 عند فتح الوصلة (كما وصفنا في القسم 3.1). إن شرط قبول بريد لمدير البريد ينطوي علي أن أوامر RCPT تقوم بتحديد صندوق بريدي لمدير البريد في أي نطاق يقدم فيه بروتوكول إرسال البريد البسيط الخدمة البريدية, وكذلك الحالة الخاصة "RCPT TO:&lt;Postmaster&gt;" (بدون مواصفات للنطاق) لابد من دعمها.
من المتوقع أن تقوم نظم بروتوكول إرسال البريد البسيط بعمل كل الجهود المناسبة لقبول البريد المتجه إلي مدير البريد من أي نظام آخر علي الانترنت. في الحالات المتطرفة (كأن يحتوي علي هجمات الحرمان من الخدمات أو غيرها من الاختراقات الأمنية) فإن خادم بروتوكول إرسال البريد البسيط قد يحجب البريد المتجه إلي مدير البريد. لكن مثل هذه الإجراءات يجب تفصيلها في إطار ضيق لتجنب حجب الرسائل التي لا تعتبر جزءاً من مثل هذه الهجمات.
نظراً لأن معظم النطاقات لها عنوان مدير البريد فمن الشائع ان تكون هدفاً لعمليات سخام. حتي وإن لم يكن عنوان مدير البريد هدفا مباشرا للرسائل البريدية المزعجة فقد يُرسل إليه رسائل بريدية مزعجة مرفوضة من خوادم أخرى وثقت عن طريق الخطأ في مسارات العودة المزيفة شائعة الاستخدام في الرسائل البريدية المزعجة.
المحطة النووية هي موقع صناعي لإنتاج الحرارة عبر الانشطار النووي للأنوية الذرية وذلك لاستعمالها لإنتاج الكهرباء وهذا الاستعمال هو الرئيسي في مجال استخدام الطاقة النووية المدنية.
تتكون المحطة النووية من أحد أو عدة مفاعلات نووية التي تتراوح قوتها من بضع إلى آلاف الميغاوات (1500 ميغاوات في بعض المفاعلات ).
في 2009 قدرت عدد المفاعلات المنتجة للطاقة 439 في 31 بلداً منتجة ما يقارب ال 14% من الطاقة الكهربائية في العالم.