Κυπριακή C: Η γλώσσα του Κύπριου προγραμματιστή ...

Posted by Χρίστος Ευαγγέλου Sat, 28 Feb 2004 02:01:55 EET

Σε μια προσπάθεια να προσδοθεί μια γεύση "εθνικότητας" στη γλώσσα προγραμματισμού C, έχουμε δημιουργήσει την Κυπριακή C. Το πιο κάτω πρόγραμμα είναι παράδειγμα αυτής της γλώσσας - παρακαλώ μη λάβετε τα διάφορα μηνύματα στα σοβαρά.

Για να μπορείτε να γράφετε τέτοια προγράμματα, απλώς κάντε #include το αρχείο "cyprusc.h", του οποίου ο κώδικας δίδετε στο τέλος της δημοσίευσης αυτής.

Εισηγήσεις για βελτίωση του συντακτικού ή/και του λεξιλογίου καλοδεχούμενες!

/ Πρόγραμμα το οποίο επιδεικνύει την Κυπριακή C/

#include <stdio.h>
#include <stdlib.h>
#include "cyprusc.h"

olostrontzilos antakoma(olostrontzilos argc, gramman argv)
{

    /
Τύποι και γλωσσικές δομές/

    olostrontzilos x;
    makris olostrontzilos i;
    makrinouris f;
    gramman onoman[80],pothen[80];
    vaftise smeiksimon {
            makrinouris x;
            makrinouris y;
    } SIMEION_TOU_EPIPEDOU;

    /
Είσοδος - έξοδος/

    pe("Poson xronwn eisai? ");
    piae("%d",&x);

    /
Δομές ελέγχου ροής 'aman' και 'aman' … 'allospos'/

    aman (x < 18)
          pe("Mase telia rokolos!\n");
    allospos aman (x > 90)
          pe("Gia sou pappou/giagia\n");

    /
Δομές ελέγχου ροής - 'thkialekse' … 'apaks'/
    /
Η εντολή τερματισμού 'pospastou'/
    /
Η εντολή εξόδου από τμήμα κώδικα 'spasma'/

    pe("Dosmou je enan ari8mon pou to 1 ws to 2: ");
    piae("%d",&x);
    thkialekse (x)
    {
          apaks 1:  pe("Eisai zolos #1\n");
                    spasma;
          apaks 2:  pe("Gia sou re gare #2!\n");
                    spasma;
          idallios: pe("MASE TELIA ZOLOS RE! EIPA SOU 1 i 2\n");
                    pospastou(EKAMES_TA_PILIES);
    }

    /
Δομές επανάληψης - 'siklin'/
    /
Ο αριθμητικός τελεστής 'eksikkin'/

    pe("Pemou je poses fores: ");
    piae("%d",&x);
    siklin (i = 1; i <= x; i++)
          pe("Zolofski %d\n",i eksikkin 1);

    /
Συναρτήσεις βιβλιοθηκών - 'pintose'/

    pe("Pemou je inta se lalousin? ");

    piae("%s",onoman);
    pe("Tzie po8en kofkeis? ");
    piae("%s",pothen);
    pe("Oste eisai o/i %s %s !\n",pintose(onoman," pou ton/tin/ta"),pothen);

    /
Η εντολή επιστροφής 'strafou'*/

    strafou(MPRAVO_RE_GARE);
}

/ cyprusc.h - Κάντε το #include στα προγράμματά σας/

#define aman if
#define allospos else
#define siklin for
#define ospou while
#define kamne do
#define thkialekse switch
#define apaks case
#define pe printf
#define piae scanf
#define antakoma main
#define pospastou exit
#define petaktou goto
#define anoikse fopen
#define kleise fclose
#define thkiavase fread
#define grapse fwrite
#define strafou return
#define idallios default
#define tipotes void
#define spasma break
#define olostrontzilos int
#define meNouri float
#define makrinouris double
#define makris long
#define dixaPlin unsigned
#define mePlin signed
#define gramman char
#define tziai &&
#define oksa ||
#define EKAMES_TA_PILIES EXIT_FAILURE
#define MPRAVO_RE_GARE EXIT_SUCCESS
#define eksikkin -
#define vaftise typedef
#define thkiamirasman /
#define pintose strcat
#define mitsiotteronPou <
#define miallitteronPou >
#define smeiksimon struct

  1. olostrontzilos,makrinouris,meNouri: © Δημήτρης "Κινούμενος Ζόλος" Παπαδημητρίου
  2. eksikkin,strafou,oksa,pospastou: © Δέσποινα (παρατσούκλι απόρρητον) Μιχαήλ
  3. smeiksimon,parkatou,pintose,thkiamirasman,vaftise: © Χαράλαμπος "Βρωμοζολαρίων" Μιλητός
  4. Υπόλοιπα: © Ζόλος Interactive, ΛΤΔ

7 comments

    Reader's Comments

  1. ΔΙΑΓΩΝΙΣΜΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΔΙΑΓΩΝΙΣΜΟΣ

    Όπως ήταν αναμενόμενο, οι προσπάθειες για τη δημιουργία μιας Κυπριακής έκδοσης της γλώσσας προγραμματισμού C επέφεραν ριζικές αλλαγές στον επιστημονικό κόσμο. Εντούτοις, η ακαδημία ταλανίζεται από ένα σοβαρότατο πρόβλημα: πια κυπριακή λέξη ή έκφραση μπορεί να χρησιμοποιηθεί για τον τελεστή της αποκλειστικής διάζευξης (XOR).

    Προκειμένου να εφευρεθεί η κατάλληλη έκφραση, η Ζόλος Interactive, ΛΤΔ προκηρύσσει διαγωνισμό. Οι ενδιαφερόμενοι παρακαλούνται να παραθέσουν τις εισηγήσεις τους στο Blogger tou Phigita εντός περιόδου δύο εβδομάδων. Έπειτα, θα διεξαχθεί ψηφοφορία, και ο νικητής θα κερδίσει φανταστικά δώρα !

    Η επιλογή της νικήτριας λέξης/έκφρασης θα βασιστεί στα εξής κριτήρια:

    • Λακωνικότητα (όσο μικρότερη είναι τόσο το καλύτερο) Περιεκτικότητα (όσο καλύτερα περιγράφει τη λειτουργία τόσο το καλύτερο) Κυπριακότητα (όσο πιο Κυπριακή τόσο το καλύτερο) * Ευρηματικότητα

    Καλή Επιτυχία!

    -- Χρίστος Ευαγγέλου ~christose, February 27, 2004

  2. Χρίστο, νομίζω πως το oksa είναι καταλληλότερο για την αποκλειστική διάζευξη. Το θέμα είναι ποια λέξη θα αντιπροσωπεύει τότε την εγκλειστική διάζευξη.

    Σημ.: Όταν γράφεις πηγαίο κώδικα, είναι καλύτερα να χρησιμοποιείς τα σύμβολα %% αντί τα ::. Το πρώτο δημιουργεί περιβάλλον όπου δεν έχεις απώλεια χαρακτήρων ενώ το δεύτερο όχι. Για παράδειγμα, χρησιμοποιώντας τους χαρακτήρες %% το αποτέλεσμα είναι:

      Αυτό το κείμενο εμφανίζεται ως έχει: _δοκιμή_, **μπλα μπλα**, http://www.phigita.net/.

    ενώ χρησιμοποιώντας τους χαρακτήρες :: έχουμε:

      Αυτό το κείμενο έχει χάσει τους ειδικούς χαρακτήρες: _δοκιμή_, μπλα μπλα, http://www.phigita.net/.

    -- Νεόφυτος Δημητρίου ~k2pts, February 28, 2004

  3. Ναι αλλά χάνονται τα newlines. Παρεπιμπτόντως, τι χρησιμοποιάς από κάτω; Perl; Και τι βάση;

    -- Χρίστος Ευαγγέλου ~christose, February 28, 2004

  4. Νομίζω πως δεν χάνονται τα newlines. Βέβαια, τώρα που κοιτάω αυτή την σελίδα από τον Internet Explorer δεν εμφανίζεται σωστά το κομμάτι του κώδικα (δηλ. %%) —θα το ψάξω το θέμα περισσότερο…

    Το Σύστημα Διαχείρισης Βάσης Δεδομένων που χρησιμοποιεί το phigita.net είναι κυρίως η PostgreSQL. Λέω "κυρίως" γιατί υπάρχει η προσπάθεια να μετακινηθούν κάποιες εφαρμογές σε άλλα συστήματα διαχείρισης που οι μηχανισμοί που υλοποιούν είναι καταλληλότεροι για το σκοπό που εξυπηρετούν οι εν λόγω εφαρμογές.

    Όσο αφορά τον κώδικα, είναι βασισμένος σε περισσότερες από μια γλώσσες προγραμματισμού συμπεριλαμβανομένου και κάποιων συναρτήσεων που είναι σε PERL. Το συγκεκριμένο κομμάτι που μετατρέπει το κείμενο σε μορφή HTML είναι γραμμένο σε TCL και ανυπομονώ να το γράψω σε C για περισσότερη ευελιξία (υπάρχουν κάποια "λάθη" που δεν μπορώ να τα αποφύγω χρησιμοποιώντας απλά κανονικές εκφράσεις).

    Ελπίζω αυτό να απαντά την ερώτηση σου.

    -- Νεόφυτος Δημητρίου ~k2pts, February 28, 2004

  5. sintishe printf

    -- Πανίκκος Νεοφύτου ~pakkoz, March 02, 2004

  6. Πιστεύω ότι ένας τρόπος να διαχωρίσουμε το oksa (OR) από το oksa (XOR) είναι να βάλουμε και στο κυπριακό κάτι μπροστά με αποτέλεσμα να έχουμε το eksoksa. Έτσι έχουμε μοναδικότητα και πετυγχαίνουμε τον σκοπό μας.

    -- Πανίκκος Νεοφύτου ~pakkoz, March 02, 2004

  7. Χρίστο φοβερή η Κυπριακή C. Άτε τώρα να κάνουμε και την Κυπριακή C Standard Library (Στάνταρτ Βιβλιοθήκη) και μπορούμε πλέον να την μετονομάσουμε σε Γ. Φυσικά θα πρέπει να την εγκρίνει και η CNSI (Cyprus National Standards Institute).

    -- Γρηγόρης Ανδρέου ~gregory, September 20, 2004