في لغة سي، عندما يصادف المترجم اسم متغير والمتغير مصفوفة يدهور المترجم القيمة إلى مؤشر في بعض الأحيان. مثلا:
any to png
هنا، يقلب المترجم int arr[] إلى مؤشر لأول عنصر من المصفوفة arr.
هذا بالفعل يحدث في الخوارزم، ولكن مع مشكلة إخرى. لا نستطيع أن نستخدم مصفوفة كمنطلق من الأساس كما فعلت في الكود الموجود بالأعلى؛ إي أن هذا مثلا:
استعمل الخوارزم.وسائط.شاشة؛
الدالة رتب (مصفوفة [] صحيح) {
شاشة::اكتب("جاري عملية الترتيب...")؛
}
الدالة الاصل () {
المتغير أرقام [] صحيح := [5، 4، -2، 8، 9، 0]؛
رتب(أرقام)؛
}
لا ينتج برنامجا. ولكن هذا:
استعمل الخوارزم.وسائط.شاشة؛
الدالة رتب (مصفوفة ۢصحيح) {
شاشة::اكتب("عملية الترتيب...")؛
}
الدالة الاصل () {
المتغير أرقام [] صحيح := [5، 4، -2، 8، 9، 0]؛
رتب(أرقام)؛
}
يعمل.
المشكلة التي أريد أن أن أطرحها هي أن مترجم الخوارزمي بالفعل يقوم بعملية التقليب، ولكن ليست بالطريقة الصحيحة، برأي الخاص، أرى أن التقليب الخفي (implicit casting) أفضل، مثل ما يحدث في لغة سي.