Re[13]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.09.05 16:19
Оценка: 1 (1) +1
Здравствуйте, mefrill, Вы писали:

M>Инчае говоря, данная операция составная, обозначающая две атомарных, и имеющая направление. Естественно было бы обозначать ее стрелкой или там, как в Паскале ":=", здесь есть ассиметричность, а значит, есть и направление. Но обозначать эту операцию символом "=" — это значит, во-первых, убрать из обозначения операции направление и, во-вторых, противоречить математической интуиции. Далее, обозначив сравнение неестественным "==" вставили в язык источных ошибок при написании. Т.е. ИМХО это все-же проблема синтаксиса, а не семантики.


Мне кажется аргумент этот натянут. Ну, нет проблем у человека с ассоциацией "=" с присвоением. Говорить о кличестве более простых операций вообще не стоит. По крайней мере в рамках языка высокого уровня (ЯВУ). Иначе мы дойдем сначала до ассемблера, а потом до маш.кодов. Ведь даже сравнение тоже записывается минимум двумя командами.

Проблема именно в банальной похожести. Например, я прекрасно отдаю себе отчем что означает "+" в С, но ошибки такие допускал просто по невнимательности. Причем если меня контролировал компилятор (в C#), то я и горя не вдал. Подумашь опечатался? С кем не бывает? Я вот переодически просто не ту букву могу в переменной залепить. Компилятор все равно остановит. А вот когда ошибочку приходится искать в рантайме... Причем ведь складывается идиотское ощущение магии! Как говорил Альф из какого-то сериала:

----------------------------------------
— Почему пячь попал в сосдеское стекло?
— Наверное не сработало ваше земное притяжение.


M> Ну стали бы обозначать присваивание через |-|, какая разница?


Через минус конечно некрасиво. Но вот через "-=" все воспринимают неплохо.

M> Человек бы все-равно привык рано или поздно, а вот изучать труднее. Конечно, создатели языка имели какие-то причины ,когда выбирали эти обозначения. Хотелось бы с ними ознакомиться.


Еще раз. Нет у начинающий (который многие то и математику то не знают как следует) с интерпретацией символа "=". Это в основном поклонники Паскаля притягивают этот аргумент за уши. Проблема именно в легкости опечатки. Опечататься можно и с ":=". Сложнее конечно, но можно.

M>Ну вот о чем я и писал уже выше. Прямую работу с памятью можно было бы реализовать по другому, может быть более полно отразив понятия Фон-Неймановсткой машины.


Думаю, что верным выходом было бы вообще предоставить возможность программировать вообще без понятия "узатель". C#, кстати, это красиво демонстрирует. Указетели есть. Причем они даже почти такие же как в С, но они есть в специальном небезопастном контексте, который можно интерпретировать как расширенный раздел языка для низкоуровневого программирования.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.09.05 16:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А раньше проверялся lint'ом.


Линт значительно моложе С. К тому же он и в подметки не годится современным типобезопастным языкам.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Лекция Вирта в политехническом - впечатления
От: mormat Украина mormat.org.ua
Дата: 25.09.05 16:34
Оценка:
..... А с чего всё начиналось... с лекции Вирта про оберон и принципы... а вылилось во всестороннее обсуждение недостатков си, плюс мессаги религиозных фанатов....
Пусто
Re[5]: Лекция Вирта в политехническом - впечатления
От: Кодт Россия  
Дата: 25.09.05 17:00
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Дык. Сам академический игрун. Причем все отговорки ищет. То маркетинг виноват, то все слишком игрушечное, то идеологически не законченное, то сложное. Думаю, что Вирт проспал главное завоевание человечества — язык БрэйнФак. Он как раз отвечает всем Виртовским требованиям. Прост, локоничен, без грамма маркетинга, идеологически завершен, позволяет сделать что угодно.


... и очень эффективно решает главную поставленную задачу — т.е. fuck brains.
Перекуём баги на фичи!
Re[3]: Лекция Вирта в политехническом - впечатления
От: Кодт Россия  
Дата: 25.09.05 17:00
Оценка: 1 (1) +4
Здравствуйте, BreQwaS, Вы писали:

BQS>Кто-то рядом добавил: Компилятор пролога можно написать на обероне, но компилятор оберона нельзя написать на прологе. Профессор согласно закивал.


Подхалим нашёлся... дедушку утешил.

Уж чего-чего, а парсер в виде набора предикатов выразить — как нефиг делать. А для построения AST и дальнейшей его трансляции в прологе есть все необходимые структуры данных — начиная с многоуровневых списков.
Перекуём баги на фичи!
Re[2]: Лекция Вирта в политехническом - впечатления
От: BreQwaS Россия  
Дата: 25.09.05 17:02
Оценка: :))) :))) :))
Здравствуйте, mormat, Вы писали:

M>..... А с чего всё начиналось... с лекции Вирта про оберон и принципы... а вылилось во всестороннее обсуждение недостатков си, плюс мессаги религиозных фанатов....


А я что? А я ничего
Я сижу и тихо созерцаю — благодаря этому сообщению меня в месячный top10 занесло.
И ведь ничего особенного не написал вроде...
WinAmp играет: [theme] — star wars (intro)
http://livejournal.com/users/breqwas
Re[4]: Лекция Вирта в политехническом - впечатления
От: Кодт Россия  
Дата: 25.09.05 17:09
Оценка: :)))
Здравствуйте, Трурль, Вы писали:

BQS>>Я честно попытался спровоцировать его на это вопросом "почему при наличии такого хорошего оберона программы пишутся не на нём".


Т>Когда-то Сократ намеревался посвятить оставшуюся жизнь выяснению вопроса, почему люди, зная как поступать хорошо, поступают все-таки плохо. Дело закончилось тем, что ему предложили выпить яду.


Это органично вписалось в его исследования
Перекуём баги на фичи!
Re[15]: Лекция Вирта в политехническом - впечатления
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.09.05 17:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да, более чем! Я читаю смысл кода, а не как компилятор. И я хочу читать "значение равно десяти", а не "десяти равно значения". Мне вообще не нравится как говорит Ёда.


Да уж.
Ну что же, сколько людей, столько и мнений.



VD>А ты просто привык к эому убожеству. Кстати, а почему в твоих листингах на Руби я подобного не встречал? Или я просто не обращал внимания?

Просто не обращал внимания:

Re[11]: Задумчиво так...: нужен ли народу scripting?
Автор: eao197
Дата: 15.09.05

def play_with_animal( animal )
    sound = animal.make_sound
    if "woof" != sound && "quack" != sound
        animal.go_away!
    else
        puts "I like animal with sound '#{sound}'"
    end
end

константы слева, даже в !=.

Re[6]: Lisp
Автор: eao197
Дата: 14.07.05

def constructor_param_maker( p )
    r = ""
    for i in 0...p.length do
        r = r + "#{p[i].type} #{p[i].name}#{', ' if i+1 < p.length}"
    end
    r
end

здесь используется оператор <, кроме того, i+1 -- это rvalue. Ну и к тому же, if здесь записан в постфиксной форме.

Re[7]: Qt + MSVC
Автор: eao197
Дата: 04.07.05

def    setup_platform_flags()
    if toolset.tag( "target_os" ) == "mswin"
            define( "MXX_RU_ACE__PLATFORM_WIN32", OPT_UPSPREAD )
            define( "WIN32", OPT_UPSPREAD )

            if "vc" == toolset.name ||
                            "bcc" == toolset.name
                    define( "MXX_RU_ACE__ACE_HAS_STANDARD_CPP_LIBRARY",
                                    OPT_UPSPREAD )
            end

            lib( "user32.lib" )
            lib( "advapi32.lib" )

            if "bcc" == toolset.name
                    lib( "ws2_32.lib" )
            end

    elsif toolset.tag( "target_os" ) == "unix"
            if toolset.tag( "unix_port" ) == "cygwin"
                    define( "MXX_RU_ACE__PLATFORM_CYGWIN32", OPT_UPSPREAD )
            elsif toolset.tag( "unix_port" ) == "linux"
                    define( "MXX_RU_ACE__PLATFORM_LINUX", OPT_UPSPREAD )
                    lib( "pthread" )
                    lib( "dl" )
                    lib( "rt" )
            end 
    elsif toolset.tag( "target_os" ) == "tandem_oss"
            define( "MXX_RU_ACE__PLATFORM_TANDEM_OSS", OPT_UPSPREAD )

            compiler_option( "-Wextensions", OPT_UPSPREAD )
            compiler_option( "-D _XOPEN_SOURCE_EXTENDED=1", OPT_UPSPREAD )

            lib( "zsptsrl" )
    end
end

если сравнение идет с атрибутом, то константа располагается слева. В случае с вызовом метода Ruby диагностирует синтаксическую ошибку при нахождении конструкции вида "a() = b".

Re[48]: Python vs C#
Автор: eao197
Дата: 24.05.05

if current_time 
    if (t - current_time) < 15 * 60
            t = current_time
    end
end

if t != current_time
    t = Time.local( t.year, t.mon, t.mday, t.hour, (t.min / 15) * 15, 0 )
    current_time = t
end

здесь нет операторов = или ==.

Re[26]: Почему нельзя преподавать C#
Автор: eao197
Дата: 07.03.05

if "<" == r[ 1 ]
        std_path_included << r[ 2 ]
else
        local_path_included << r[ 2 ]
end

константа слева.

Re[61]: Почему нельзя преподавать C#
Автор: eao197
Дата: 06.04.05

Re[40]: Почему нельзя преподавать C#
Автор: eao197
Дата: 04.04.05

Нет операторов сравнения внутри if.


Вообще-то в Ruby такая же ситуация с присваиванием в if, как и в C. Интерпритатор предупреждение выдает, но не более того.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: Лекция Вирта в политехническом - впечатления
От: Пацак Россия  
Дата: 25.09.05 19:44
Оценка:
Здравствуйте, eao197, Вы писали:

E>Просто не обращал внимания:

(skip)
E>Вообще-то в Ruby такая же ситуация с присваиванием в if, как и в C. Интерпритатор предупреждение выдает, но не более того.

Ужас ИМХО. И все из-за того, что кому-то пришло в голову сделать оператор присваивания, возвращающий значение. Нет, конечно получилось красиво и стало возможно писать "элегантный" код типа:

while (d = a[i++]) b[j++] = d*d;


...но сколько одновременно породилось проблем. А с другой стороны "альтернативный" код вышел бы не так уж чтоб и сильно длиннее:

while (a[i]) {
    b[i] = a[i]*a[i];
    i++;
}


или даже

for(i=0; a[i]; i++) {
    b[i] = a[i]*a[i];
}


Поневоле задумаешься — а так ли оправданы были жертвы...

ЗЫ Хотя сам грешен, пользуюсь...
Ку...
Re[11]: Лекция Вирта в политехническом - впечатления
От: Павел Кузнецов  
Дата: 25.09.05 19:49
Оценка:
mefrill,

> я на си программирую уже больше 10 лет, а написал в сравнении один = вместо двух. В результате полдня потратил в сложном алгоритме на лов ошибки.


1) В твоем компиляторе можно включить соответствующие предупреждения?
2) Интересно, что не только в C/C++ путаница между = и ==. Например, в том же Ocaml разница существенно более тонкая: = обозначает equality, а == -- identity. Грубо говоря = сравнивает значения, а == -- указатели.

> Или синтаксис объявлений. С какой стати в объявлении массива имя переменной стоит внутри объявления типов?


С той же, с какой * стоит перед именем переменной, а () -- после имени функции: это все идет от общей идеи, что объявление напоминает использование.
int *i;
int (*pf)(void);


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


Даже не языка, а самой концепции указателей. Сложная это для новичков штука, вне зависимости от языка.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[9]: Лекция Вирта в политехническом - впечатления
От: Дарней Россия  
Дата: 26.09.05 04:28
Оценка:
Здравствуйте, mefrill, Вы писали:

M>Я, конечно, не в курсе, как так получилось, что стали университетские машины с юниксами поставлять, но предполагаю, что так оно и было.


Неправильно предполагаешь. Поищи точную информацию

M>Вот снова попытка перенести наши понятия в то время. Тогда "практиков" в том смысле, что мы сейчас под этим имеем ввиду, не было. Софт писался под конкретную машину, пакетом для конкретного заказчика. Или софт писался в университетах и НИИ под конкретные проекты. Вот и эти ребята такими же "практиками" были. При заводе они не работали я полагаю. А больше и негде практикой заниматься тогда было. Время, когда программист стал офисным клерком, наступило позже.


"Практики" тогда как раз были — точнее, только они и были. А вот "теоретиков" не было.

M>В американских университетах у Си была куча конкурентов?


А почему ты ограничиваешься только университетами? В те времена системный софт писали на Ассемблере, каковой и был серьезнейшим конкурентом Си.
Многие тогда считали, что "преимущества, которые дает этот язык, не перевешивают потерю в производительности" (какие знакомые слова, не правда ли? )

Д>>Никакого основного продукта, написанного на Си, у них не было ТОГДА

Д>>Как утверждается историками, Юних вообще возник как побочный продукт разработки внутреннего софта.

M>Можно сказать и так: тогда вообще никаких продуктов не было. продукты появились вместе с микрокомпьютерами.


Так всё-таки никакого "основного продукта", который стал паровозом для Си, не было?

M>О чем я хотел сказать изначально — только о том, что нельзя переносить сегодняшние понятия, а тем более, коммерческие, в то время, в другую ситуацию.


Ну не я это начал.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[13]: Массивы и указатели в C
От: Дарней Россия  
Дата: 26.09.05 04:54
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>То что это не совсем так. Массив "неотличим" только при условии получения и работы с указателем на его первый элемент.


void foo(int p[])
{
    int size = sizeof(p);
    printf("%d\n", size);
}

void bar()
{
    static int a[5] = { 0, 1, 2, 3, 4 };
    int size = sizeof(a);
    printf("%d\n", size);
    foo(a);
}


А если вот так?
сравни результат sizeof внутри foo и внутри bar
Или попробуй передать в функцию двухмерный "массив".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Лекция Вирта в политехническом - впечатления
От: Дарней Россия  
Дата: 26.09.05 04:59
Оценка:
Здравствуйте, mefrill, Вы писали:

M>Говорю честно, не знаю причины. Может кто взятку дал в правительстве, может еще что. Ставили машины, а ОС для них была юникс. А почему ставили именно эти машины я не знаю.


то есть у тебя нет точных данных
Зачем ты тогда разбрасываешься обвинениями, котороые обоснованы только твоими измышлениями?
Или это потому, что так сказал Вирт, а он никогда не ошибается?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[13]: Массивы и указатели в C
От: AVC Россия  
Дата: 26.09.05 07:03
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Так что же неверного в утверждении, что массив в Си (вне области видимости его объявления) неотличим от указателя?


ПК>То что это не совсем так. Массив "неотличим" только при условии получения и работы с указателем на его первый элемент. Если этого не делать, то отличия останутся. Например, можно оперировать указателем на массив.


Ну, не знаю.
Вот простой пример. Компилятор Си (gcc 3.3.3) позволяет делать free для массива (в разных вариациях).
Сравнивая выдачу foo и bar, можно убедиться, что функция free "была здесь".

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

void foo(int (*a)[5])
{
    int i;

    for (i = -1; i <= 5 ; ++i)
        printf("a[%d] = %d\n", i, (*a)[i]);
    free(*a);
    free(a);
}

void bar(int a[5])
{
    int i;

    for (i = -1; i <= 5; i++)
        printf("a[%d] = %d\n", i, a[i]);
    free(a);
}

int main()
{
    static int a[5] = { 0, 1, 2, 3, 4 };

    printf("=== foo ===\n");
    foo(&a);
    printf("=== bar ===\n");
    bar(a);
    return 0;
}


>> ИМХО, приведенный Вами, Павел, пример и есть не что иное, как syntactic sugar: так, прилепили фичу к указателю.


ПК>В таком случае, выразите, пожалуйста, тот пример через указатели.


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

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[11]: Лекция Вирта в политехническом - впечатления
От: Глеб Алексеев  
Дата: 26.09.05 07:11
Оценка: 1 (1) +2
Здравствуйте, jazzer, Вы писали:

J>Да ладно тебе.

J>Куча программистов знают и язык типа С++, и язык типа Perl, и активно их используют.
Гораздо меньше народу одинаково хорошо знает язык типа С++ и язык типа Haskell и адекватно их применяет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Лекция Вирта в политехническом - впечатления
От: Дарней Россия  
Дата: 26.09.05 08:03
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Видать мало пишешь (не сочти за наезд). Я вон на на шарпе периодически накалываюсь, хоть и пишу на С-подобных языках уже черти сколько.


В шарпе? А расскажи плиз, как ты ухитряешься это делать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[10]: Лекция Вирта в политехническом - впечатления
От: mefrill Россия  
Дата: 26.09.05 08:10
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>то есть у тебя нет точных данных

Д>Зачем ты тогда разбрасываешься обвинениями, котороые обоснованы только твоими измышлениями?
Д>Или это потому, что так сказал Вирт, а он никогда не ошибается?

Во-первых, какиеми обвинениями я разбрасываюсь??? Я лишь написал простую и, для меня очевидную, вещь: многие свойства языка Си сложны для восприятия, многие синтаксические конструкции языка Си неестественны и противоречат математической традиции. Далее, я написал, что популярность языка Си обусловливается не его ИМХО мифическими преимуществами, каковые безусловно есть, а традицией программисткого сообщества. Об истинных истоках этой традиции я не знаю, ибо этим вопросом не занимался никогда изысканиями на эту тему. То, что язык Си изучают (изучали!?) потму, что он востребован в промышленности, да это так. Вопрос: почему он востребован в промышленности? Ты отвечаешь: потому, что он такой хороший и превосходный. Я отвечаю: это не так, язык обычный, с преимуществами и недостатками, конечно, для процедурного языка, очень низкоуровневый. Но программируют на нем из-за того, что в университете научили и продуктов куча на этом языке. Получается замкнутый круг. Где-то он должен разорваться. Я его разрываю, как мне кжется, резонно предполагая связи какие-то в правительстве, взятку или еще что-то. Что предполагаешь ты — неизвестно. Так в чем обвинения?
Re[16]: Лекция Вирта в политехническом - впечатления
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.09.05 08:35
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>В шарпе? А расскажи плиз, как ты ухитряешься это делать?


Ну вот так. Набираешь код, потом компилируешь и компилятор ругается на несоответствие типов.
... << RSDN@Home 1.2.0 alpha rev. 617>>
AVK Blog
Re[11]: Лекция Вирта в политехническом - впечатления
От: Дарней Россия  
Дата: 26.09.05 08:48
Оценка:
Здравствуйте, mefrill, Вы писали:

M>многие синтаксические конструкции языка Си неестественны и противоречат математической традиции.


А кто вообще сказал, что конструкции языка для низкоуровневого программирования должны удовлетворять математическим традициям?

M>Далее, я написал, что популярность языка Си обусловливается не его ИМХО мифическими преимуществами, каковые безусловно есть


так всё-таки "мифическими" или "каковые безусловно есть"?

M>Но программируют на нем из-за того, что в университете научили и продуктов куча на этом языке. Получается замкнутый круг. Где-то он должен разорваться. Я его разрываю, как мне кжется, резонно предполагая связи какие-то в правительстве, взятку или еще что-то.


Кажется, я уже начинаю понимать ход мыслей Вирта.
Си плох, потому что я знаю, что он плох -> Паскаль лучше, потому что я знаю, что Паскаль лучше -> значит, кто-то дал взятку, чтобы все использовали Си. Потому что Си плох и никто не стал бы использовать его по своей воле.

M>Я его разрываю, как мне кжется, резонно предполагая связи какие-то в правительстве, взятку или еще что-то. Что предполагаешь ты — неизвестно. Так в чем обвинения?


Я не предполагаю. Я просто читаю имеющиеся в наличии источники информации. здесь, например. Если бы ты тоже почитал, вместо того чтобы выдумывать, то сам бы понимал, насколько абсурдно твое предположение.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[17]: Лекция Вирта в политехническом - впечатления
От: Дарней Россия  
Дата: 26.09.05 08:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну вот так. Набираешь код, потом компилируешь и компилятор ругается на несоответствие типов.


ну у меня тоже бывает, что я чего-то не то ввожу, что надо, а потом компилятор ругается. Но сами конструкции языка совершенно ни в чем не виноваты, я абсолютно уверен
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.