Soci (Soczó Zsolt) szakmai blogja

2007.04.26.

Még egyszer az érdekes kódról

Filed under: C#,Szakmai élet — Soczó Zsolt @ 10:20

Előzmény.

MViktor írta:
Szornyusegesen nez ki, de fordul, sot! mukodik. http://en.wikipedia.org/wiki/Duff’s_device

Igen, innen vettem én is. :)

Rétikánya:
Magamtól szörnyülködtem. Megnéztem a Wikin…
…s ilyenkor mindig rájövök mennyire nem is értek a programozáshoz. El kéne mennem favágónak.

Nem, nem. Ez hekk, nem normális programozás. Gondolj bele, ha minden nap ilyen kódot kellene megértened. Ez kb. olyan kód, mint amit mickkék csináltak az NavAndGo-s felvételi kampányukban. Amikor egy kódról nem látszik villámgyorsan mit csinál, akkor az vagy zseniális hekk, vagy egy kalap szar. Ez a kód azért érdekes, mert az ember nem is gondolja, hogy ez a szintaxis egyáltalán lefordul C-ben, pedig de. :) Ahogy a cikk is írja, lehet, hogy még hatékonyabb is, mint az eredeti ciklusos megoldás, de mai compilereken és procikon már ez se biztos. Ha az embernek határozott célja van egy hekkel, és bebizonyítja, hogy ezt a célt teljesíti, hekkeljen. Ha nem, írjon olvasható kódot. Szóval ne írd le magad, ez eszement kód. :)

SebDani:
Ebben az esetben szívesen rácsapnék a kezére annak aki azt a fordítót írta, amin ez lefordul.

Elvileg minden C kompatiblis szabvány fordítón fordul. :) Ilyen laza a nyelv szintaxisa. Elő kell vennem a Kernighan-Ritchie könyvet újra, de nem azért, hogy ilyenekkel szórakoztassam a kollégáimat. :)

9 Comments

  1. Soci: megtennéd, hogy egy kicsit – pár mondatban – írnál erről a kódról valami infót olyanoknak mint pl én (én != programozó)? Nem C tanfolyamot várok, csak egy kis magyarázatot. Gondolom baromi érdekes ha helyet kapott itt. Köszönöm!

    Comment by Tako — 2007.04.26. @ 23:18

  2. Közben után kérdeztem/néztem szóval már tárgytalan a kérés!

    Comment by Tako — 2007.04.27. @ 12:00

  3. A link nagy D-vel várja el… http://en.wikipedia.org/wiki/Duff%27s_Device

    Comment by hrongyorgy — 2007.04.28. @ 10:38

  4. Elnezest, hogy ide postolom, de tudja valaki ez miert dob exceptiont?

    using System;
    using System.Security.Permissions;
    using System.Windows.Forms;

    namespace foo
    {
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.PropertyGrid propertyGrid1;

    public Form1()
    {
    this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
    this.SuspendLayout();
    this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.propertyGrid1.SelectedObject = this.propertyGrid1;
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Controls.Add(this.propertyGrid1);
    this.ResumeLayout(false);
    }

    [STAThread]
    [FileIOPermission(SecurityAction.Deny, Read = “C:\\temp\\xxx.txt”)]
    static void Main()
    {
    Application.Run(new Form1());
    }
    }
    }

    Comment by Szindbad — 2007.05.09. @ 10:14

  5. E miatt:
    this.propertyGrid1.SelectedObject = this.propertyGrid1;

    Van ennek értelme?

    Comment by Soczó Zsolt — 2007.05.09. @ 10:40

  6. Persze, azzal semmi gond nincs. Ha kiveszed a [FileIOPermission(SecurityAction.Deny, Read = “C:\\temp\\xxx.txt”)] sort, akkor le is fut rendesen. De ha lecsereled = new object()-re akkor is jon az exception…

    Comment by Szindbad — 2007.05.09. @ 10:42

  7. Persze szemantikailag sok ertelme nincs, csak demonstralni, hogy ott dobodik furcsa es erthetetlen modon egy erthetetlen exception…

    Comment by Szindbad — 2007.05.09. @ 10:51

  8. I see, most elmegyek vizsgázni, de este megnézem, elég bizarr.

    Comment by Soczó Zsolt — 2007.05.09. @ 10:53

  9. Bocs a fooldert, de ez meg erdekes lehet: Ezt meg anno a .NET 1.0 -ban fedeztem fel, es benne volt az 1.1-ben, 2.0-ban, es most benne van a 3.0-ban es a 3.5 betaban is… Szoval furcsa.

    Comment by Szindbad — 2007.05.09. @ 10:56

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress