stanford-oval/wikipedia huggingface dataset:
مؤشر (برمجة)
الاستخدامات > تخصيص الذاكرة الديناميكية

تُستخدم المؤشرات في تخزين عناوين القوالب الذاكرة المخصصة ديناميكياً وإدارتها كذلك. كما تُستخدم مثل هذه القوالب أيضا في تخزين كائنات البيانات أو كائنات المصفوفات. توفر معظم اللغات المُنشاة المُنظمة واللغات غرضية التوجه مساحة من الذاكرة يُطلق عليها الكومة heap أو منطقة التخزين الحر، حيث يتم تخصيص الدوال ديناميكياً.
يوضح مثال التالي لكود لغة السي C طريقة بناء الكائنات ديناميكياً طريقة تزويدها بالمراجع. تدعم مكتبة لغة السي C القياسية وظيفة دالة malloc() لتخصيص قوالب الذاكرة من الكومة heap. حيث تُسجل حجم الكائن بهدف تخصيصه على هيئة متغيرات ويُعيد المؤشر إلى قالب ذاكرة مقسم في شكل جديد بحيث يكون مُناسب لتخزين الكائن، أو تُعيد مؤشر null في حالة فشل عملية التخصيص.
/* مادة مخزون الأجزاء */
struct Item {
    int         id;     /* رقم الجزء  */
    char *      name;   /* اسم الجزء   */
    float       cost;   /* التكلفة     */
};

/* تخصيص وتهيئة مادة جديدة */
struct Item * make_item(const char *name) {
    struct Item * item;

    /* تخصيص مادة كائن جديد وإعادة شكله */
    item = malloc(sizeof(struct Item));
    if (item == NULL)
        return NULL;

    /* تهيئة أعضاء البند الجديد */
    memset(item, 0, sizeof(struct Item));
    item->id =   -1;
    item->name = NULL;
    item->cost = 0.0;

    /* احفظ نسخة من الاسم في البند الجديد */
    item->name = malloc(strlen(name) + 1);
    if (item->name == NULL) {
        free(item);
        return NULL;
    }
    strcpy(item->name, name);

    /* إعادة مادة الكائن المُضاف حديثاً  */
    return item;
}
يُوضح الكود التالي كيفية عدم تخصيص كائنات الذاكرة ديناميكياً أي إعادتها إلى الكومة heap أو منطقة التخزين الحر. تُوفر المكتبة القياسية للغة C وظيفة free() لعدم تخصيص كقالب الذاكرة المخصصة مسبقاً وإعادتها إلى الكومة heap.
\* عدم تخصيص مادة الكائن*\
void destroy_item(struct item *item) {
\* البحث عن مؤشر الكائن null *\
if (item == NULL)
return;
\* عدم تخصيص سلسلة الاسم المحفوظة داخل المادة *\
if (item->name != NULL) {
free(item->name);
item->name = NULL;
}
\* عدم تخصيص المادة نفسها *\
free(item);
}
الاستخدامات > أجهزة الذاكرة المعنونة

يُمكن استخدام المؤشرات في بعض تراكيب وأبنية الحوسبة للمعالجة الذاكرة أو أجهزة الذاكرة المعنونة بشكل مباشر.
تُعد عملية تحديد عناوين للمؤشرات هي أحد الأدوات الهامة خلال برمجة المتحكمات الدقيقة أو المايكروكونترولر microcontrollers. فيما يلي مثال بسيط يُوضح مؤشر من نوع int وتهيئتها لعنوان نظام عد السداسي عشر hexademical وفي هذا المثال سوف تكون القيمة الثابتة هي 0x7FFF:
int *hardware_address = (int *)0x7FFF;
ظهر استخدام لغة BISO بهدف الوصول إلى إمكانيات الفيديو لأجهزة الحاسب الآلي في فترة منتصف الثمانينات بطيء السرعة. عادة ما تُستخدم التطبيقات ذات العرض المكثف للولوج إلى ذاكرة الفيديو CGA وذلك عن طريق تحويل قيمة نظام عد السداسي عشر hexademical الثابتة 0xB8000000 لمؤشر لمصفوفة تتكون من 80 من قيم -bit int 16 بالغير مُشار إليها. تتألف كل قيمة من كود ASCII في الخانة ذات الوزن المنخفض من وحدات البايت، والخانة ذات الألوان ذات وحدات البايت العالية. لذا، لوضع حرف "A" في الصف رقم 5 والعمود رقم 2 باللون الأبيض على الأزرق الساطع، يمكنك كتابة الكود كالتالي:
#define VID ((unsigned short (*)[80])0xB8000000)

void foo() {
    VID[4][1] = 0x1F00 | 'A';
}
المؤشرات والتحويل القسري

في العديد من اللغات، يوجد في بعض المؤشرات قيد إضافي ألا وهو أن الكائن المُشار إليه كائن من نوع خاص. على سبيل المثال، ربما يُعلن عن المؤشر للإشارة إلى عدد صحيح؛ لذا ستحاول اللغة منع المبرمج من الإشارة إلى كائنات الأعداد بخلاف العدد الصحيح، مثل الأرقام العشرية، والتخلص من بعض الأخطاء.
على سبيل المثال في لغة السي C
int *money;
char *bags;
سيكون money مؤشر لعدد صحيح و bags ستكون مؤشر char. سوف يُظهر الناتج التالي تحذير مترجم بان «مهمة من نوع مؤشر غير متجانس» وفقاً للغة GCC
bags = money;
نظراً لإعلان money و bags بأنواع مختلفة. يجب توضيح رغبتك الفعلية في عمل المهمة عن طريق typecasting وتعني " كيفية تغيير نوع البيانات من نوع إلي نوع أخر وقت البرمجة بدون التقييد بنوع معين وبدون التغيير في قيمتها إلا في حالات معينة فقط.
للتوضيح " وذلك لمنع ظهور هذا التحذير للمترجم.
bags = (char *)money;
يُوضح ذلك تغيير أو تحويل مؤشر العدد الصحيح لـ money إلى مؤشر char والإشارة إلى bags.
يجب أن تحتفظ مسودة 2005 للمتطلبات القياسية للغة السي C التي تقوم بتحويل مؤشر مستمد من أحد الأنواع إلى نوع آخر على الحيادية الصحيحة لكلا النوعين (مؤشرات 6.3.2.3، par.7)
char *external_buffer = "abcdef";
int *internal_data;

internal_data = (int *)external_buffer; // UNDEFINED BEHAVIOUR if "the resulting pointer
                                         // is not correctly aligned"
تضع حسابات المؤشرات في الحسبان حجم النوع في اللغات التي تُمكن المؤشر الحسابي في اللغات التي تُمكن المؤشر الحسابي. على سبيل المثال، ينتج عن إضافة عدد صحيح إلى المؤشر إلى ظهور مؤشر جديد يُشير إلى عنوان أعلى بمقدار مضاعفة هذا الرقم لحجم هذا النوع. يُمكننا ذلك من حساب عنوان عناصر المصفوفة لهذا النوع المحدد بسهولة ويُسر كما وُضح سابقاً في مثال مصفوفات لغة السي C. يجب على المبرمج أن يتوقع أن المؤشر الحسابي سيتم حسابه بطريقة مختلفة وذلك عند تحويله لأحد مؤشرات أحد الأنواع إلى مؤشر من نوع أخر من حجم مختلف. على سبيل المثال إذا بدأت مصفوفة في لغة السي C بmoney عند 0x2000 وsizeof(int) 4 بايت حيث sizeof(char) 1 بايت ومن ثم (money+1) سوف يُشير إلى 0x2004 ولكن سوف بُشير (bags+1) إلى 0x2001. ويُعد فقدان البيانات عند كتابة البيانات «الكبيرة» في محل البيانات «الصغيرة» من مخاطر التحويل القسري (على سبيل المثال bags[0]=65537;)، تظهر نتائج غير متوقعة عند تحويل القيم bit-shifting، ومشكلات المقارنة، خاصة مع القيم في مقابل القيم الغير موقعة.
تقوم بعض اللغات بتخزين معلومات نوع التشغيل التي يُمكن استخدامها للتأكد من أن هذه الأشكال الهامة صالحة في عملية التشغيل على الرغم من استحالة تحديدها أي من هذه الأشكال آمنة في آن واحد وذلك بوجه عام، في حين ترفض اللغات الأخرى القيمة التقريبية الغير قابلة للتغير من الأشكال الآمنة، أو لا تقبل أي منها على الإطلاق.
زيادة مستوى أمان المؤشرات

تسمح المؤشرات بوقوع العديد من أخطار البرمجة ويرجع ذلك لسماحها لبرنامج بالولوج إلى الكائنات التي لم يُعلن عنها بوضوح من قبل. بيد أن السلطة التي توفرها كبيرة جداً لدرجة أنه يُمكن أن يكون من الصعب القيام ببعض مهام البرمجة في غيابها. لذا فقد اختلقت بعض اللغات كائنات لها بعض خصائص المؤشرات المفيدة في حين تجنب بعض ثغراتها pitfalls للمساعدة في التعامل مع مثل هذه المشكلات.
تواجه المؤشرات مشكلة رئيسية ألا وهي أنه أثناء معالجتها بشكل مباشر كأرقام، يُمكن تشكيلها للإشارة إلى العناوين غير المستخدمة أو إلى البيانات التي تستخدم لأغراض أخرى. العديد من اللغات، بما في ذلك معظم لغات البرمجة الوظيفية functional programming languages واللغات الأمرية الحديثة imperative languages مثل لغة Java إلي تستبدل المؤشرات بنوع أكثر تعقيداً من المرجع والذي عادة ما يُشار إليه ببساطة كالمرجع والذي يمكن استخدامه فقط للإشارة إلى الكائنات ولا تُعالج كأرقام لمنع هذا النوع من الأخطاء.
تُتناول فهرسة المصفوفة كحالة خاصة.
يُطلق على المؤشر الذي لا يحتوي على أي عنوان محدد له اسم المؤشر البدائي wild pointer. يمكن لأي محاولة لاستخدام مثل هذه المؤشرات الغير مهيأة أن تؤدي إلى سلوك غير متوقع إما لأن القيمة المبدئية ليست عنوان صالح وإما لأن استخدامها يمكنه تدمير أجزاء أخرى من البرنامج. وغالباً ما تكون النتيجة ظهور خطأ التجزئة segmentation fault أو انتهاك قواعد التخزينstorage violation.
في الأنظمة تخصيص الذاكرة، من السهل بناء المؤشر التابع dangling pointer عن طريق عدم تخصيص منطقة الذاكرة التي تُشير إليها. يُعد هذا النوع من المؤشرات خطير ودقيق لأن منطقة الذاكرة الغير مخصصة يُمكنها أن تحتوي على نفس البيانات التي كانت بها قبل إلغاء تخصيصها ولكن يُمكن حينها إعادة تخصيصها والكتابة عليها من خلال استخدام كود غير متصل بها، غير معروف للكود السابق. يُزعم أن اللغات التي تحتوي على garbage collection تمنع هذا النوع من الأخطاء (حيث تتم عملية إلغاء التخصيص يتم بشكل تلقائي) ولكن لا تتم إزالة المؤشر نفسه بواسطة garbage collector ويمكن أن يشير إلى بيانات ذات صلة وغير متوقعة إذا أعيد استخدامها في أي وقت بعد إلغاء تخصيصها.
تُدعم بعض اللغات مثل لغة C++ المؤشرات الذكية smart pointers والتي تستخدم نموذج مبسط من حساب المرجع للمساعدة في تتبع تخصيص الذاكرة الديناميكية بالإضافة إلى العمل كمرجع. في غياب حلقات المرجع، حيث يشير الكائن إلى نفسه بصورة غير مباشرة من خلال سلسلة من المؤشرات الذكية smart pointers, يلغي هذا على إمكانية المؤشرات التابعة dangling pointer وتسريبات الذاكرة. تدعم سلاسل Delphi حساب المرجع محلياً.
مؤشر Autorelative

مؤشر autorelative (أو self-relative) هو المؤشر الذي تُفسر قيمته كإزاحة من عنوان المؤشر نفسه؛ لذا، إذا كان هيكل البيانات M له مؤشر autorelative فالكائن p الذي يُشير إلى جزء من M نفسه فإن M ربما يعيد تخصيصها في الذاكرة من دون الحاجة إلى تحديث قيمة p.
مؤشر الارتكاز Based

مؤشر الارتكاز هو المؤشر الذي قيمته عبارة عن إزاحة من قيمة مؤشر آخر. يمكن استخدامه لتخزين وتحميل كتل من البيانات، محددة عنوان بداية الكتلة إلى مؤشر الارتكاز.
المراوغة المزدوجة

في بعض اللغات يمكن أن يشير المؤشر إلى مؤشر آخر، يتطلب عمليتان للتتبع للوصول للقيمة الأصلية. بينما كل مستوى من المراوغة ربما يضيف تكلفة أداء، وأحياناً ضرورية لتقديم سلوك صحيح لهياكل البيانات المعقدة. على سبيل المثال، في لغة C تُعرَّف القائمة المرتبطة من حيث الكائن الذي يحتوي مؤشر للكائن التالي في القائمة:
struct element
{
    struct element * next;
    int              value;
};

struct element * head = NULL;
يستخدم هذا التطبيق مؤشر للكائن الأول في القائمة كبديل للقائمة ككل. إذا أضيفت قيمة جديدة إلى بداية القائمة يجب تغيير المقدمة للإشارة إلى الكائن الجديد. بما أن براهين C تمرر عادة بالقيمة، يتيح استخدام المراوغة المزدوجة بتنفيذ الإدخال بصورة صحيحة، وبه الآثار الجانبية المرغوبة للقضاء على كود الحالة الخاصة للتعامل مع المدخل في أول القائمة:
// Given a sorted list at *head, insert the element item at the first
// location where all earlier elements have lesser or equal value.
void insert(struct element **head, struct element *item)
{
    struct element ** p;  // p points to a pointer to an element

    for (p = head; *p != NULL; p = &(*p)->next)
    {
        if (item->value <= (*p)->value)
            break;
    }
    item->next = *p;
    *p = item;
}

// Caller does this:
insert(&head, item);
في هذه الحالة، إذا كانت قيمة البند أقل من head فإن مقدمة المتصل تُحدَّث بشكل صحيح في عنوان البند الجديد.
المؤشرات البدائية

المؤشرات البدائية هي المؤشرات التي لم يتم تهيأتها بعد (لا يوجد عنوان محدد للمؤشر البدائي) ربما تتسبب مثل هذه المؤشرات في تعطيل البرنامج أو العمل بطريقة بدائية. تُشير المؤشرات التي لم يتم تهيأتها في لغات برمجة Pascal أو لغة السي C إلى عناوين غير متوقعة في الذاكرة.
يوضح مثال الكود التالي مؤشر بدائي:
int func(void)
{
    char *p1 = malloc(sizeof(char)); /* (undefined) value of some place on the heap */
    char *p2;       /* wild (uninitialized) pointer */
    *p1 = 'a';      /* This is OK, assuming malloc() has not returned NULL. */
    *p2 = 'b';      /* This invokes undefined behavior */
}
هنا، ربما تشير p2 إلى أي مكان في الذاكرة، لذا أداء المهمة *p2 = ‘b’ سيفسد منطقة غير معروفة من الذاكرة التي ربما تحتوي على بيانات حساسة.
الشعبة البدائية

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

من الممكن محاكاة سلوك المؤشر باستخدام فهرس المصفوفة (عادة بعد واحد).
بدايةً للغات التي لا تدعم المؤشرات بوضوح ولكن تدعم المصفوفات، يمكن اعتبار المصفوفة ومعالجتها كما لو كانت نطاق الذاكرة بالكامل (في نطاق مصفوفة محددة) وأي فهرس يمكن اعتباره مكافئ لسجل الغرض العام في لغة التجميع (يشير هذا إلى البايت الفردي ولكن التي تناسب قيمته الفعلية لبداية المصفوفة، ليس عنوانه المطلق في الذاكرة). على افتراض أن المصفوفة هي هيكل بيانات 16 ميجا بايت مترابط، وحدات البايت الفردي (أو سلسلة من وحدات البايت المرتبطة في المصفوفة) يمكن عنونتها مباشرة ومعالجتها باستخدام اسم المصفوفة مع العدد الصحيح 31 بايت الغير موقع كمؤشر المحاكاة (يماثل هذا أمثلة مصفوفات اللغة C الموضحة سابقاً). يمكن محاكاة المؤشر الحسابي بالإضافة أو الطرح من الفهرس، مع الحد الأدنى من الإضافات العامة التي تُقارن بالمؤشر الحسابي الحقيقي.
حتى انه من الممكن نظرياً، استخدام التقنية السابقة مع جهاز المحاكاة مجموعة الإرشادات لمحاكاة أي كود آلة أو الوسطية (كود البايت) لأي معالج/ لغة في لغة أخرى التي لا تدعم المؤشرات مطلقاً (على سبيل المثال، لغة Java / لغة JavaScript). لتحقيق هذا، يمكن تحميل الشفرة الثنائية بدايةً إلى وحدات بايت مرتبطة من المصفوفة لمحاكاة «القراءة»، التفسير والعمل كلياً مع الذاكرة المحتوية على نفس المصفوفة. إذا كان ضرورياً، لتجنب مشاكل تجاوز سعة المخزن كليةً يمكن للتدقيق الفائق العمل للمجمع (أو إذا لم يكن، كتابة الكود في جهاز المحاكاة)
الدعم في العديد من لغات البرمجة > لغة Ada

Ada هي لغة كتابة قوية حيث أن جميع المؤشرات تكتب ويسمح فقط بالمحادثة المكتوبة الآمنة. تهيأ جميع المؤشرات افتراضياً إلى null، وأي محاولة للولوج إلى البيانات عن طريق مؤشر null يسبب ظهور استثناء. تسمى المؤشرات في لغة Ada بأنماط الولوج. لا تسمح لغة Ada 83 بالحسابات على أنماط الولوج (على الرغم من أن العديد من الموردين المقدمين لها كميزة غير معيارية)، لكن لغة Ada 95 تُدعم الحسابات «الآمنة» على أنماط الولوج عبر حزمة System.Storage_Elements.
الدعم في العديد من لغات البرمجة > لغة Basic

لا تدعم لغة Basic المؤشرات بصورة عامة. اللهجات الحديثة في لغة Basic، مثل FreeBASIC أو BlitzMax لديها تطبيق شامل للمؤشر.
في FreeBASIC، تُعامل حسابات مؤشرات ANY (تعادل void* في لغة C) كما لو كان مؤشرANY نطاقه 1 بايت. لا يمكن تتبع مؤشرات ANY، كما في لغة C. أيضاً، الإلقاء بين ANY وأي مؤشر من نوع آخر من المؤشرات لن يسبب أي مخاطر.
dim as integer f = 257
dim as any ptr g = @f
dim as integer ptr i = g
assert(*i = 257)
assert((g + 4) = (@f + 1))
الدعم في العديد من لغات البرمجة > لغة C#

في لغة برمجة C#، تُدعم للمؤشرات تحت شروط معينة: أي كتلة من الكود المتضمنة المؤشرات لابد من الإشارة عليها بعلامة غير آمن. تتطلب مثل هذه الكتل أذونا أمان أعلى من المسموح بها لتشغيلها. الصيغة هي نفسها الموجودة في لغة C++ والعنوان المشار إليه يمكن أن يكون إما ذاكرة متحكم بها أو غير متحكم بها. مع ذلك، مؤشرات الذاكرة المتحكم بها (أي مؤشر لكائن متحكم به) يجب الإعلان عنها باستخدام كلمة أساسية ثابتة، والتي تمنع garbage collector من تحريك الكائن المشار إليه كجزء من التحكم بالذاكرة بينما يكون المؤشر في النطاق وهذا يحافظ على صلاحية العنوان.
استثناء هذا من استخدام بنية IntPtr وهو تحكم آمن يتساوى مع int* ولا يتطلب كود عدم الأمان. يستعاد هذا النوع غالباً عند استخدام طرق من النظام. Runtime.InteropServices على سبيل المثال:
// Get 16 bytes of memory from the process's unmanaged memory
IntPtr pointer = System.Runtime.InteropServices.Marshal.AllocHGlobal(16);

// Do something with the allocated memory
الدعم في العديد من لغات البرمجة > لغة COBOL

لغة البرمجة COBOL تدعم المؤشرات إلى المتغيرات. عناصر البيانات الولية أو المجمعة (المسجلة) والمعلنة في LINKAGE SECTION من البرنامج التي تقوم طبيعياً على المؤشر مع وجود مساحة لعنوان كائن البيانات (عادة ما تكون كلمة واحدة للذاكرة) مخصصة مثل بند البيانات الحقيقي (ضمني خفي). في كود مصدر البرنامج، تستخدم هذه المتغيرات مثل أي متغير تخزيني آخر لكن محتوياتهم يولج إليها ضمنيا بطرقة غير مباشرة من خلال مؤشراتهم.
مساحة الذاكرة لكل كائن بيانات مشار إليه يقسم ديناميكياً عادةً باستخدام بيانات الاتصال الخارجي أو عن طريق بناء اللغة الموسع المتكامل مثل بيانات EXEC CICS أو EXEC CICS.
كما تقدم الإصدارات الممتدة من COBOL متغيرات المؤشر المعلن عنه في شروط استخدام المؤشر. فيم مثل هذه المؤشرات تحددت وعدلت باستخدام بيانات SET و SET ADDRESS.
كما تقدم بعض الإصدارات الممتدة من لغة COBOL متغيرات PROCEDURE-POINTER القادرة على تخزين عنوان الكود القابل للتنفيذ.
الدعم في العديد من لغات البرمجة > لغة D

لغة البرمجة D مشتقة من لغة C ولغة C++ وهي تؤيد مؤشرات C وتحويل نوع المتغير typecasting C تأييداً كاملاً.
الدعم في العديد من لغات البرمجة > لغة Eiffel

تدعم اللغة الوجهة Eiffel المؤشرات في شكل المراجع، التي تكتب ولا تسمح بأي شكل من أشكال المؤشر الحسابي. معيار ECMA من لغة Eiffel يتضمن آلية «النوع المرفق» التي تدَّعي ضمان سلامة void.
الدعم في العديد من لغات البرمجة > لغة Fortran

توضح لغة Fortran-90 قدرة المؤشر الكتابي القوية. تحتوي مؤشرات Fortran على أكثر من مجرد عنوان ذاكرة بسيط. كما تنطوي على الحدود العليا والدنيا من أبعاد المصفوفة، الخطوات (على سبيل المثال لدعم أقسام المصفوفة التعسفية)، وغيرها من البيانات الوصفية. المشغل المنتسب، => يستخدم لينسب المؤشر إلى متغير له صفة الهدف. بيانات تخصيص لغة Fortran-90 يمكن استخدامها أيضا لنسب المؤشر إلى كتلة من الذاكرة. على سبيل المثال، يمكن استخدام الكود التالي لتعريف وتكوين هيكل قائمة مرتبطة:
type real_list_t
  real :: sample_data(100)
  type (real_list_t), pointer :: next => null ()
end type

type (real_list_t), target :: my_real_list
type (real_list_t), pointer :: real_list_temp

real_list_temp => my_real_list
do
  read (1,iostat=ioerr) real_list_temp%sample_data
  if (ioerr /= 0) exit
  allocate (real_list_temp%next)
  real_list_temp => real_list_temp%next
end do
تضيف لغة Fortran-2003 دعم للمؤشرات الإجرائية. كذلك، كجزء من ميزة التشغيل المتداخل في لغة C تدعم لغة Fortran-2003 الوظائف الجوهرية لتحويل أنواع مؤشرات C إلى مؤشرات Fortran وإعادتها.
الدعم في العديد من لغات البرمجة > لغة Go

تحتوي لغة Go على مؤشرات. تتماثل صيغتها المعلنة مع مؤشرات لغة C، ولكن تكتب بالعكس، منتهية بالنوع. على عكس لغة C، لدى Go garbage collection ولا تسمح بالمؤشر الحسابي. لا يمكن تعريف أنواع المرجع مثل لغة C++ لكن يتم تمرير بعض الأنواع الضمنية عن طريق المرجع؛ يجب أن تتكون تلك بجعل الكلمة الأساسية بدلاً من الجديدة. كطريقة مختلفة (عن أنواع المرجع) لتوحيد الصيغة بين المؤشر وغير المؤشر، انخفض مشغل السهم (->)والمجمع يعرف فقط أن المبرمج يعني تتبع المؤشر باستخدام مشغل النقطة (.) (بينما على لغة C ولغة C++ سيكون هذا خطأ كامل).
الدعم في العديد من لغات البرمجة > لغة Modula-2

يتم تطبيق المؤشرات كثيرا كما في Pascal، كذلك باراميترات VAR في الإجراءات يطلق عليها Modula-2 وهي أقوى كتابياً من Pascal، مع عدد قليل من الطرق للهروب من نظام الكتابة. بعض المتغيرات في لغة Modula-2 (مثل Modula-3) تحتوي على garbage collection.
الدعم في العديد من لغات البرمجة > لغة Oberon

كثيراً ما تتوافر المؤشرات مع Modula-2. ما زال هناك القليل من الطرق للتهرب من النظام الكتابي وبذلك تكون لغة Oberon ومتغيراتها ما زالت آمنه فيما يتعلق بالمؤشرات أكثر من لغة Modula-2 ومتغيراتها. كما في Modula-3 تمثل garbage collection جزء من مواصفات اللغة.
الدعم في العديد من لغات البرمجة > لغة Pascal

على النقيض من العديد من اللغات التي تميز المؤشرات فإن معيار ISO Pascal يسمح فقط للمؤشرات بالإشارة إلى المؤشرات المكتوبة ديناميكياً والغير معروفة ولا يسمح لهم بالإشارة إلى المعيار الثابت أو المتغيرات المحلية. لا يوجد بها مؤشر حسابي. يجب أن تحتوي المؤشرات أيضاً على نوع مترابط والمؤشر من نوع ما لا يتفق مع المؤشر من نوع آخر (مثل مؤشر char لا يتفق مع مؤشر العدد الصحيح). يساعد هذا على القضاء على القضايا الأمنية المتأصلة تطبيقات المؤشر الآخر، تستخدم هذه خاصة للغة PL/I أو للغة C. كما أنها تزيل بعض المخاطر التي يسببها المؤشر المتدلي، ولكن القدرة على السماح الديناميكي للمساحة المتبعة باستخدام عملية معيار التصرف (الذي له نفس تأثير مثل وظيفة المكتبة الحرة الموجودة في اللغة C) مما يعني أن خطورة مؤشرات التدلي لم يتم القضاء عليها كلياً.
مع ذلك في بعض المصادر التجارية والمفتوحة للغة Pascal (أو مشتقاتها) يسمح بتطبيقات مثل Free Pascal أو Turbo Pascal أو Object Pascal في Embarcadero Delphi – يسمح للمؤشر بالإشارة إلى المعيار الثابت أو المتغيرات المحلية ويمكن الإلقاء من نوع من المؤشرات إلى آخر. علاوة على ذلك، المؤشر الحسابي غير مقيد: الإضافة أو الطرح من المؤشر يحركه بمقدار هذا الرقم من وحدات البايت في كلا الاتجاهين، لكن استخدام إجراءات معيار Inc أو dec معه يحرك المؤشر بحجم نوع البيانات المصرح للإشارة إليه.
الدعم في العديد من لغات البرمجة > لغة البرمجة Perl

تدعم لغة برمجة Perl المؤشرات، على الرغم من ندرة استخدامها، في شكل وظائف من الحزم والتفريغ. تهدف هذه للتفاعلات البسيطة فقط مع مكتبات OS المجمعة. في جميع الحالات الأخرى، تستخدم لغة Perl المراجع المكتوبة والتي لا تسمح بوجود أي شكل من أشكال المؤشر الحسابي. فهي تستخدم لبناء تراكيب البيانات المعقدة.
متلازمة فوا-ألاجوانين

| متلازمة فوا-ألاجوانين> Foix–Alajouanine syndrome | متلازمة فوا-ألاجوانين> Foix–Alajouanine syndrome |
| --- | --- |
متلازمة فوا-ألاجوانين: متلازمة فوا-ألاجوانين
تسميات أخرى: التهاب النخاع الناخر الصاعد تحت الحاد
 معلومات عامة  :  معلومات عامة  
الاختصاص: طب الجهاز العصبي  
 الإدارة :  الإدارة 
حالات مشابهة: تنكس مخيخي كحولي  ‏  
تعديل مصدري - تعديل  : تعديل مصدري - تعديل  
متلازمة فوا-ألاجوانين، يُطلق عليها أيضًا اسم التهاب النخاع الناخر الصاعد تحت الحاد، هي مرض ناجم عن تشوه شرياني وريدي في النخاع الشوكي. تنطوي معظم حالات المتلازمة خصوصًا على التشوهات الشريانية الوريدية الجافية التي تتظاهر في النخاع الشوكي القطني أو الصدري السفلي. سُميت هذه المتلازمة على اسم الباحثين تشارلز فوا وتيوفيل ألاجوانين اللذين وصفا الحالة لأول مرة في عام 1926.
العلامات والأعراض

قد يظهر المرضى مجموعة من الأعراض التي من شأنها الإشارة إلى إصابة النخاع الشوكي مثل (شلل في الذراعين والساقين، وتطور الخدر وفقدان الإحساس بالإضافة إلى الخلل الوظيفي في العضلة العاصرة)، ويمكن من خلال فحوصات التشريح المرضي الكشف عن موت مجموعة من الخلايا العصبية المتناثرة في النخاع الشوكي.
التشخيص

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

يمكن اللجوء إلى العلاج الجراحي باستخدام الانصمام داخل الوعائي أو ربط التشوه الشرياني الوريدي داخل النخاع الشوكي. يمكن استخدام الستيروئيدات القشرية بشكل حاد بهدف المساعدة في إبطاء ترقي الأعراض أو بشكل مزمن لدى المرشحين الضعيفين للعمل الجراحي. في كلتا الحالتين، يُعد العلاج الفيزيائي جزءًا بالغ الأهمية من عملية التعافي من أجل مساعدة المريض على استرجاع قوة الجسم وتنسيقه.
معبد بوسيدون

معبد بوسيدون
| 0 | 1 |
| --- | --- |
نوع المبنى:  المعابد اليونانية  organized archaeological site (en)  
المكان:  Sounion (en)  
المنطقة الإدارية:  Lavreotiki Municipality (en)  
البلد:   اليونان 
الإهداء:  بوسيدون 
| 0 | 1 |
| --- | --- |
الارتفاع عن سطح البحر:  60 متر 
| 0 | 1 |
| --- | --- |
يضم:  Sounion temple column in Venice (en)  
مادة البناء:  رخام 
| 0 | 1 |
| --- | --- |
الأنماط المعمارية:  نظام دوريي — عمارة يونانية 
| 0 | 1 |
| --- | --- |
عدد الزوار سنويا:  222٬800 (2016) 259٬709 (2017) 306٬665 (2018) 
الإحداثيات:  37°39′01″N 24°01′28″E﻿ / ﻿37.65025°N 24.02456°E﻿ / 37.65025; 24.02456 
ar
تعديل - تعديل مصدري - تعديل ويكي بيانات
يعد معبد بوسيدون اليوناني القديم في كيب سونيون، الذي بُني فيما بين 444-440 قبل الميلاد، أحد المعالم الرئيسية في العصر الذهبي لأثينا. معبد دوريك، يطل على البحر في نهاية كيب سونيون، على ارتفاع 60 متر (200 قدم) تقريبًا.
التاريخ

ربما تم تدمير معبد بوسيدون الأصلي الذي يعود إلى العصور القديمة في الموقع، والذي تم بناؤه من صخور التوفا، في 480 قبل الميلاد من قبل القوات الفارسية خلال غزو زركسيس الأول لليونان. على الرغم من عدم وجود دليل مباشر على سونیون، إلا أن زركسيس كان لديه بالتأكيد معبد أثينا وكل شيء آخر في الأكروبوليس في أثينا، تم هدمه كعقاب على تحدي الأثينيين.
هندسة معمارية

تصميم المعبد بيريبتيروس هو نموذج سداسي الشكل، أي أنه يحتوي على رواق أمامي بستة أعمدة دوريك. يقف اليوم 16 عمودًا من أصل 38 عمودًا (أربعة منها أعيد تشييدها في القرن العشرين). يشبه المعبد إلى حد بعيد معبد هيفايستوس المعاصر والمحافظ عليه جيدًا أسفل الأكروبوليس، والذي ربما يكون قد صممه المهندس المعماري نفسه.
علم الآثار

تم إجراء دراسة مبكرة للآثار، بدون حفريات، من قبل ديليتانتي في عام 1797 وجويلاوم ابيل بلويت (بعثة Morea 1829). تم إجراء الحفريات الأولى بواسطة فيلهلم دوربفيلد، مدير المعهد الأثري الألماني، في عام 1884. بدأت الجهود المبذولة لترميم والحفاظ على بقايا معبد بوسيدون في عام 1875. ترجع الحالة الحالية للنصب التذكاري إلى العمل الذي تم إنجازه في الخمسينيات من قبل خدمة الآثار اليونانية، بقيادة أناستاسيوس أورلاندوس.
معرض الصور

تصوير 1887
لوحة من إدوارد دودويل، مناظر من اليونان (1821)
مخطط المعبد