Начало программирования.

Тема в разделе "WASM.BEGINNERS", создана пользователем Heineken, 22 ноя 2008.

  1. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    хотел бы по-прежнему заострить внимание уважаемой публики на Лиспе.
     
  2. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Прошу прощения, я забыл.
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Можешь в личку кинуть какие машины есть?
     
  4. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    Очередной холивар, с удовольствием буду наблюдать за развитием :)

    Начинал, как многие, с паскаля, в техникуме.
    Потом для себя выучил базовый С. Был приятно удивлен гибкостью языка. Как можно в цикле for убрать любой из параметров и он будет работать :) префиксные и постфиксные операции, а функции с переменным числом параметров - вообщем по сравнением с обычным паскалем - Си - это действительно прорыв в программировании.

    Всегда раздражало что в паскале есть процедуры и есть функции, а чем они отличаются - фиг поймешь.

    Да, кстати
    гораздо быстрей написать { }, чем begin end ;)
     
  5. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    amvoz
    Ну ладно, можно ли в твоем продвинутом С сделать так:

    var Volumes: Array['C'..'Z'] of TSomeRecord;

    if X in [12..34, 56, 78] then ...

    case Y of
    1 :
    23..34 :

    Это в с процедуры и функции одинаково обзываются...
     
  6. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    beginner
    если мне не отшибает память, в паскале (как собссно и в делфи) процедуры не умеют возвращать значение. для этих целей в этих языках существуют ф-ции.\

    K10
    интересно, а можно ли в вашем любимом пасе замутить такое:
    Код (Text):
    1. ((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
     
  7. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Интересно)))....как же вы тогда учили паскаль если не знать разницы между процедурой и функ))) функция после свого исполнения возращает какойто результат, и если я не ошибаюсь то он храниться в регистре EAX, или указатель на возвращаемое значение,а процедура такого не делает. она завершила свою работу и все!
     
  8. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    XshStasX
    Тут один так "выучил" уже Паскаль, что не знает базового синтаксиса, а уже лезет сравнивать ЯП по "критериям"...
     
  9. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Это изврат, а то что я привел - вполне реальные и полезные вещи...
     
  10. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Без кавычек. И я нигде не говорил что его выучил. Я говорил, что на нём кодил, а сейчас нет, могу и забыть синтаксис. И я извинился между прочим.
    ...Что Вы там написали? Объявлен массив вижу. Дальше вижу оператор case. Если мне не изменяет память надо выбрать одного оператора из нескольких. С условием разобраться не могу. Ну, да можно так делать в С.
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    K10
    окей.
    а вот так на поскале можна?
    Код (Text):
    1. (group '(a b c d e f g) 2)
    2. ((A B) (C D) (E F) (G))
    :)
    или вот такое:
    Код (Text):
    1. (sort '(1 4 2 5 6 7 3) #'<)
    2. (1 2 3 4 5 6 7)
    или вот:
    Код (Text):
    1. (remove-if #'evenp '(1 2 3 4 5 6 7))
    2. (1 3 5 7)
     
  12. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    varnie
    Ну так по части возможности поизвращаться круче, чем Си, только Си++. Ну или Брэйнфак :)

    EvilsInterrupt

    Ой, много чего. Сплошь америкосские, правда, отечественных почти нет...
     
  13. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    ...Опять же Pascal Параметры-значения, параметры-переменные. Бился-бился я с ними. То ест понимаешь, потом забываешь, потом снова возвращаешься к книге. В С ничего этого нет. Он прост, как валенок. Вот параметры и всё. Функция возврщает только одно значение. Если надо больше- используем указатели. Указатель- переменная, содержащая адрес другой переменной. Строка- массив символов. Просто и лаконично.
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Эти три отдельно взятых примера.

    Очевидно, Вы и Си знаете также как Паскаль...

    ужос, параметр-переменная это передача параметра по указателю. Т.е. однох..йственно:

    Код (Text):
    1. procedure SomeProc(var dwParam: DWORD);
    2. begin
    3. dwParam:=10;
    4. end;
    и
    Код (Text):
    1. procedure SomeProc(pdwParam: PDWORD);
    2. begin
    3. pdwParam^:=10;
    4. end;
     
  15. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    В С можно объявить массив и третий третий пример тоже можно сделать. По-другому, потому, что синтаксис разен. Прикол-то в чём?
     
  16. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    varnie
    мы вроде говорим об императивных языках, а не о функциональных
     
  17. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    amvoz
    Ну представь пример кодеса, который так делает
     
  18. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    main(){
    int a [5];
    switch (1) {
    case 2:;
    case 3:;
    default:;
    }
    }
     
  19. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Почти оно, только поправь, чтобы начало массива a было по индексу 'C' а конец соответсвенно индекс 'Z'.
    С case поправь, чтобы одна ветка работала при значении 2, а другая ветка case'а - при значениях от 10 до 40
     
  20. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    XshStasX
    Ошибка в том, что не всегда результат хранится в eax. Есть еще и st(0) и связка edx:eax (это стандарты). А у некоторых компиляторов вообще есть свои конвенции о передаче аргументов и возврате значений.

    K10
    Вот только не надо притягивать суда язык(я о Си) это удел компиляторов. Есть в природе компиляторы Си'шные которые так же обходятся без lib'ов, а в место них используют к примеру def-файлы. lib-фаил это архив coff файлов, эдакий альтернатив omf'у (ну Баалу надо было задушить Borland'a :)). Такой подход (я имею ввиду obj+lib или omf) дает возможность модульному программированию (хотя и кривому, так как они содержат скомпилированный код). А на fasm'е так же придется тянуть lib'ы если собирать coff-объектник, который в последствии можно скомпоновать с другими объектными файлами. Ну и в заключении взгляните на Си--, это конечно не чистый Си, но очень-очень похожий на Си и Ассемблер вместе взятые. Ему так же не нужны lib'ы. А так же я видел (вот только не помню у кого - у паскаля или ему подобному) unit файлы, это по моему тоже модули?

    GoldFinch
    Си не императивный, а процедурный, и lisp не только функциональный.

    varnie
    пока научишься программировать на lisp'e, разучишься говорить на собственном языке :)

    Да и вообще вот-это полный рулез:
    Код (Text):
    1. Sub MyProc (ByVal X As Integer)
    2.    Do
    3.      If X = WM_ХВАТИТ_СПОРИТЬ_ЧТО_ГУАН Then Break ' потому что только Basic полный Rulez :)
    4.      Else Continue
    5.    Loop
    6. End Sub
    :)

    У каждого языка есть свои плюсы и недостатки, и не зря наверное выбирают паскаль и бейсик в качестве языка программирования в учебных заведениях вместо "более низкоуровневому" Си :) и мега крутому Си++ :)

    Хотя все выше изложенное это моё ИМХО.