Яндекс.Метрика
    Поиск по тегу

    Программирование


    Найдено: 51 запись

    humour

    Нанотехнологические методы программирования…

    Может быть вы это уже видели, ибо статейка старая, но этот маразм мне попался только сегодня утром... Итак, встречайте: Основу ОС составляет загрузчик.

    PS: А если ещё и по ссылкам из статейки пойти, точно можно получить фимоз мозга...

    humour

    Приоритеты и отношения

    Программистский юмор и суровая реальность:

    Знайте свои приоритеты.

    Ни о чём

    Ожидание ввода символа в юниксовой консоли

    В очередной раз столкнулся с проблемой блокирующего чтения символа из юниксовой консоли. Кто имел счастье писать на борландовском Паскале под ДОС наверняка помнит функцию ReadKey(), блокирующую выполнение программы до нажатия эникея. У меня пару раз всплывало это требование и в юниксовой консоли, но сишная функция getchar() блокирует выполнение до нажатия энтера, что не есть гуд в некоторых случаях.

    За подсказку решения спасибо SlamJam'у :)

    Итак:

    humour

    Язык программирования Глагол

    Наткнулся в Википедии на статью о замечательном языке программирования Глагол. Я просто не смог пройти мимо, не поделившись радостью с сообществом.

    Это феерично:

    ОТДЕЛ Привет+;

    ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\";

    УКАЗ
    Вывод.Цепь("Привет!")

    КОН Привет.


    P.S. ширвещ и бегунок просто вводят меня в экстаз.

    humour

    Эволюционная лестница программиста

    Здесь приведены все этапы развития программиста, на примере написания до боли всем нам известной программы «Hello, World».

    Школьник:
    10 PRINT "HELLO WORLD"
    20 END

    Студент-первокурсник:
    program Hello(input, output)
    begin
    writeln('Hello World')
    end.

    Студент на старших курсах:
    (defun hello
    (print
    (cons 'Hello (list 'World))))

    Новый специалист:
    #include<stdio.h>
    void main(void)
    {
    char *message[] = {"Hello ", "World"};
    int i;

    for(i = 0; i < 2; ++i)
    printf("%s", message[i]);
    printf("\n");
    }

    Опытный специалист:
    #include<iostream.h>
    #include<string.h>
    class string
    {
    private:
    int size;
    char *ptr;

    public:
    string() : size(0), ptr(new char('\0')) {}

    string(const string &s) : size(s.size)
    {
    ptr = new char[size + 1];
    strcpy(ptr, s.ptr);
    }

    ~string()
    {
    delete [] ptr;
    }

    friend ostream &operator <<(ostream &, const string &);
    string &operator=(const char *);
    };

    ostream &operator<<(ostream &stream, const string &s)
    {
    return(stream << s.ptr);
    }

    string &string::operator=(const char *chrs)
    {
    if (this != &chrs)
    {
    delete [] ptr;
    size = strlen(chrs);
    ptr = new char[size + 1];
    strcpy(ptr, chrs);
    }
    return(*this);
    }

    int main()
    {
    string str;

    str = "Hello World";
    cout << str << endl;

    return(0);
    }

    Очень опытный программист:
    [
    uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
    ]
    library LHello
    {
    // bring in the master library
    importlib("actimp.tlb");
    importlib("actexp.tlb");
    importlib("actexp.tlb");

    // bring in my interfaces
    #include "pshlo.idl"

    [
    uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
    ]
    cotype THello
    {
    interface IHello;
    interface IPersistFile;
    };
    };

    [
    exe,
    uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
    ]
    module CHelloLib
    {

    // some pre related header files
    importheader();
    importheader();
    importheader();
    importheader("pshlo.h");
    importheader("shlo.hxx");
    importheader("mycls.hxx");

    // needed typelibs
    importlib("actimp.tlb");
    importlib("actexp.tlb");
    importlib("thlo.tlb");

    [
    uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
    aggregatable
    ]
    coclass CHello
    {
    cotype THello;
    };
    };

    #include "ipfix.hxx"

    extern HANDLE hEvent;

    class CHello : public CHelloBase
    {
    public:
    IPFIX(CLSID_CHello);

    CHello(IUnknown *pUnk);
    CHello(IUnknown *pUnk);
    ~CHello();

    HRESULT __stdcall PrintSz(LPWSTR pwszString);

    private:
    static int cObjRef;
    };

    #include <windows.h>
    #include <ole2.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "thlo.h"
    #include "pshlo.h"
    #include "shlo.hxx"
    #include "mycls.hxx"

    int CHello::cObjRef = 0;

    CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
    {
    cObjRef++;
    return;
    }

    HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
    {
    printf("%ws\n", pwszString);
    return(ResultFromSpre(S_OK));
    }

    CHello::~CHello(void)
    {

    // when the object count goes to zero, stop the server
    cObjRef--;
    if( cObjRef == 0 )
    PulseEvent(hEvent);

    return;
    }

    #include <windows.h>
    #include <ole2.h>
    #include "pshlo.h"
    #include "shlo.hxx"
    #include "mycls.hxx"

    HANDLE hEvent;

    int _cdecl main(
    int argc,
    char * argv[]
    ) {
    ULONG ulRef;
    DWORD dwRegistration;
    CHelloCF *pCF = new CHelloCF();

    hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

    // Initialize the OLE libraries
    CoInitializeEx(NULL, COINIT_MULTITHREADED);

    CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
    REGCLS_MULTIPLEUSE, &dwRegistration);

    // wait on an event to stop
    WaitForSingleObject(hEvent, INFINITE);

    // revoke and release the class object
    CoRevokeClassObject(dwRegistration);
    ulRef = pCF->Release();

    // Tell OLE we are going away.
    CoUninitialize();

    return(0);
    }

    extern CLSID CLSID_CHello;
    extern UUID LIBID_CHelloLib;

    CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
    0x2573F891,
    0xCFEE,
    0x101A,
    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
    };

    UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820
    */
    0x2573F890,
    0xCFEE,
    0x101A,
    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
    };

    #include <windows.h>
    #include <ole2.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include "pshlo.h"
    #include "shlo.hxx"
    #include "clsid.h"

    int _cdecl main(
    int argc,
    char * argv[]
    char * argv[]
    ) {
    HRESULT hRslt;
    IHello *pHello;
    ULONG ulCnt;
    IMoniker * pmk;
    WCHAR wcsT[_MAX_PATH];
    WCHAR wcsPath[2 * _MAX_PATH];

    // get object path
    wcsPath[0] = '\0';
    wcsT[0] = '\0';
    if( argc> 1) {
    mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
    wcsupr(wcsPath);
    }
    else {
    fprintf(stderr, "Object path must be specified\n");
    return(1);
    }

    // get print string
    if(argc> 2)
    mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
    else
    wcscpy(wcsT, L"Hello World");

    printf("Linking to object %ws\n", wcsPath);
    printf("Text String %ws\n", wcsT);

    // Initialize the OLE libraries
    hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

    if(SUCCEEDED(hRslt)) {

    hRslt = CreateFileMoniker(wcsPath, &pmk);
    if(SUCCEEDED(hRslt))
    hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

    if(SUCCEEDED(hRslt)) {

    // print a string out
    pHello->PrintSz(wcsT);

    Sleep(2000);
    ulCnt = pHello->Release();
    }
    else
    printf("Failure to connect, status: %lx", hRslt);

    // Tell OLE we are going away.
    CoUninitialize();
    }

    return(0);
    return(0);
    }

    Начинающий хакер:
    #!/usr/local/bin/perl
    $msg="Hello, world.\n";
    if ($#ARGV>= 0) {
    while(defined($arg=shift(@ARGV))) {
    $outfilename = $arg;
    open(FILE, ">" . $outfilename) || die "Can't write $arg:
    $!\n";
    print (FILE $msg);
    close(FILE) || die "Can't close $arg: $!\n";
    }
    } else {
    print ($msg);
    }
    1;

    Опытный хакер:
    #include
    #define S "Hello, World\n"
    main(){exit(printf(S) == strlen(S) ? 0 : 1);}

    Бывалый хакер:
    % cc -o a.out ~/src/misc/hw/hw.c
    % a.out

    Хакер, всем хакерам — хакер:
    % cat
    Hello, world.
    ^D

    Новый руководитель:
    10 PRINT "HELLO WORLD"
    20 END

    Средний руководитель:
    mail -s "Hello, world." bob@b12
    Колян, помоги написать программу, которая выводит на экран "Hello, world."?
    Нужно выполнить к завтрашнему дню.
    ^D

    Старший руководитель:
    % zmail Колян
    Мне нужен "Hello, world." к обеду.

    Глава корпорации:
    % letter
    letter: Command not found.
    % mail
    To: ^X ^F ^C
    % help mail
    help: Command not found.
    % Чёрт!
    !: Event unrecognized
    % logout


    Английский вариант был найден здесь.

    Ни о чём

    Звуковая карта в качестве консольного устройства

    Poul-Henning Kamp в списке рассылки freebsd-arch продемонстрировал пример кода, позволяющего осуществлять консольный ввод-вывод через звуковую карту. Оригинал его письма здесь, а я предлагаю свой, по возможности максимально близкий к оригиналу, перевод. Некоторые слова я перевести не смог, поэтому оставляю в оригинале и в скобках даю свои предположения.

    contests_and_rankings

    Конкурс для программистов №2

    Проект ttools.ru объявляет конкурс для программистов №2!

    О конкурсах проекта можно почитать в рубрике "Конкурсы" блога ttools.ru

    Опыт проведения предыдущего конкурса был учтен и отражен в правилах и плане проведения конкурса

    О задаче конкурса #2:

    Задача будет сложнее и интереснее задачи конкурса #1. Тем не менее, по опыту первого конкурса, уверен решение «в лоб» самые сильные участники смогут запрограммировать в течении первого часа. Однако объём и характер данных для обработки выбраны таким образом, что при таком решении время вычислений будет существенным, что автоматически даст преимущество участникам, с более оптимальным алгоритмом решения. При этом оптимизация алгоритма не должна быть сложной настолько, чтобы время на его реализацию было неоправданным и не давало преимущества другим участникам. Потребуется найти наиболее эффективное решение за минимальное время. Надеюсь, вам будет интересно побороться!

    humour

    Эволюция разработки

    Забавно наблюдать за прогрессом в области девелопмента. И даже страшно подумать что будет дальше — вдруг человек и компьютер вполне поменяются ролями…

    image

    humour

    Эволюция Python-программиста

    Начинающий


    1. def factorial(x):
    2.     if x == 0:
    3.         return 1
    4.     else:
    5.         return x * factorial(x - 1)
    6. print factorial(6)


    Программирующий уже год (Ранее изучавший Pascal)


    1. def factorial(x):
    2.     result = 1
    3.     i = 2
    4.     while i <= x:
    5.         result = result * i
    6.         i = i + 1
    7.     return result
    8. print factorial(6)