LINUX.ORG.RU
 

Предлагайте - С vs C++ vs List vs ?


0

1

Обычно на ЛОР много споров про языки программирования, предлагаю выбрать какую-нибудь задачу не подходящую под один специфический язык и попробовать привести различные решения ее же, жду ваши варианты

П.С. ушел гулять, буду поздно


[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 08.07.2009 23:40:38  

Re: Предлагайте - С vs C++ vs List vs ?

>> банальный вызов через указатель, и обновление этого указателя при замене кода.

> Добровольное анальное рабство.

Ну извини, если это недостаточно круто для тебя, зато KISS и никакой магии. Если учесть, что собственно замена кода - наименьшая из проблем при горячем обновлении, то я не понимаю, что тебя не устраивает. Хотя нет, понимаю... ты на всё смотришь через призму SystemTap, у которого задача совсем другая.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 08.07.2009 23:40:38  

Re: Предлагайте - С vs C++ vs List vs ?

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


и зря вы так - я подумывал о подобном решении с подгрузкой .so с "патчами", вполне вменяемое как по мне

**** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от tailgunner 08.07.2009 23:39:54  
Absurd

Re: Предлагайте - С vs C++ vs List vs ?

>Я просто не вижу проблем, если заранее предусмотреть горячую замену

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

*** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от Absurd 08.07.2009 23:50:41  

Re: Предлагайте - С vs C++ vs List vs ?

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

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

**** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от lester 08.07.2009 23:45:31  
mv

Re: Предлагайте - С vs C++ vs List vs ?

> мне кажется вы болтаете не меньше о своем пресловутом решении, я хотя бы не делаю подобных заявлений без доказательств

Я всё жду лично твоего решения. Но, видно, не дождусь...

Вот моё:

$ cat p.c
#include <stdio.h>
#include <unistd.h>

int foo(int* a, int* b)
{
	return *a + *b;
}

int main()
{
	int a = 1, b = 2;
	for(;;) {
		printf("%d\n", foo(&a, &b));
		sleep(1);
	}
}

gcc -o p -O0 -g3 p.c

-O0 - инлайн не надо, вычисление значения функции к компайл-тайме не надо
-g3 - dwarf надо

Запускаем, программа начинает в цикле выдавать 3. Это неправильно, функция foo должна из *a вычитать *b, а не складывать.

$ cat foo.stp
function new_foo:long(a:long, b:long)
%{
	int a, b;
	int ret;

	ret = copy_from_user(&a, (void*)THIS->a, sizeof(int));
	ret = copy_from_user(&b, (void*)THIS->b, sizeof(int));
	THIS->__retvalue = (long)(a - b);
%}

probe process("p").function("foo").return
{
	$return = new_foo($a, $b);
}

$ sudo stap -vvg foo.stp

SystemTap translator/driver (version 0.9.8/0.141 non-git sources)
Copyright (C) 2005-2009 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
Session arch: x86_64 release: 2.6.29.5-191.fc11.x86_64
Created temporary directory "/tmp/stapNyqKkF"
Searched '/usr/share/systemtap/tapset/x86_64/*.stp', found 3
Searched '/usr/share/systemtap/tapset/*.stp', found 51
Pass 1: parsed user script and 54 library script(s) in 260usr/10sys/278real ms.
probe foo@/home/vitaly/tmp/p.c:4 process=/home/vitaly/tmp/p reloc=.absolute section=.text pc=0x40050c
probe foo@/home/vitaly/tmp/p.c:4 process=/home/vitaly/tmp/p reloc=.absolute section=.text pc=0x40050c
Pass 2: analyzed script: 2 probe(s), 5 function(s), 1 embed(s), 4 global(s) in 10usr/0sys/6real ms.
Pass 3: using cached /home/vitaly/.systemtap/cache/c0/stapconf_c0ae482565beaf89e160f7fc32842779_478.h
Pass 3: using cached /home/vitaly/.systemtap/cache/e6/stap_e632dc73bf308023768fd8a692fc518e_3672.c
Pass 4: using cached /home/vitaly/.systemtap/cache/e6/stap_e632dc73bf308023768fd8a692fc518e_3672.ko
Pass 5: starting run.
Running /usr/bin/staprun -v -u /tmp/stapNyqKkF/stap_e632dc73bf308023768fd8a692fc518e_3672.ko

Программа начинает выдавать правильный результат: -1

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от tailgunner 08.07.2009 23:48:12  
mv

Re: Предлагайте - С vs C++ vs List vs ?

> Хотя нет, понимаю... ты на всё смотришь через призму SystemTap, у которого задача совсем другая.

Я, ваще-то, это... Голосовал за CL, в котором такой финт легко и без системтапов с юпробами и ютрейсами делается.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 08.07.2009 23:54:31  

Re: Предлагайте - С vs C++ vs List vs ?

> Я всё жду лично твоего решения. Но, видно, не дождусь...

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

**** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от lester 08.07.2009 23:57:44  
mv

Re: Предлагайте - С vs C++ vs List vs ?

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

shared objects - некросплатформенны.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от lester 08.07.2009 23:57:44  
mv

Re: Предлагайте - С vs C++ vs List vs ?

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

К тому же, для твоего варианта программу нужно специально проектировать, а к моим (Lisp и C + stap) - нет.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 08.07.2009 23:59:03  

Re: Предлагайте - С vs C++ vs List vs ?

> shared objects - некросплатформенны.

вы уже придираетесь - ес-но "патч" будет собираться под целевую платформу( как и сама программа )

**** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 08.07.2009 23:59:53  

Re: Предлагайте - С vs C++ vs List vs ?

> К тому же, для твоего варианта программу нужно специально проектировать, а к моим (Lisp и C + stap) - нет.

не спорю - Lisp тут лучше и не зря вы предложили именно эту задачу, насчет вашего решения на С - таки некроссплатформенное

**** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от Absurd 08.07.2009 23:50:41  

Re: Предлагайте - С vs C++ vs List vs ?

> Что-то предусматривать заранее это бесполезная трата времени

Точно, а любую программу надо начинать писать с printf("Hello. world!\n");

> Что-то начинать от строительства инфраструктуры это замечательный способ провалить проект, не более.

Ну почему же, некоторые люди знают, что пишут, и что им для этого надо.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от lester 09.07.2009 0:02:23  
mv

Re: Предлагайте - С vs C++ vs List vs ?

> насчет вашего решения на С - таки некроссплатформенное

Но, таки, я его сделал, и сделал быстро.

Можешь не "выкать". Я по старой фидошной привычке ожидаю скорого мордобоя, когда люди в дискуссии на "вы" переходят ;) К тому же, я не такой старый, как кажусь с бородой.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 09.07.2009 0:04:42  

Re: Предлагайте - С vs C++ vs List vs ?

> Но, таки, я его сделал, и сделал быстро.

но не без недостатков

> Можешь не "выкать". Я по старой фидошной привычке ожидаю скорого мордобоя, когда люди в дискуссии на "вы" переходят ;) К тому же, я не такой старый, как кажусь с бородой.


хорошо

**** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 08.07.2009 23:55:50  

Re: Предлагайте - С vs C++ vs List vs ?

> Я, ваще-то, это...

Прокурору расскажешь :D

>Голосовал CL, в котором такой финт легко и без системтапов с юпробами и ютрейсами делается.

Вы, лисперы - читеры по природе своей. Надо же, "легко и без системтапов с юпробами" - а как насчет компилятора в исполняющей системе? Еще непонятно, что сложнее - stap или лисповый рантайм.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от tailgunner 09.07.2009 0:10:34  
mv

Re: Предлагайте - С vs C++ vs List vs ?

> Вы, лисперы - читеры по природе своей.

Что поделать? Эволюция, естественный отбор... Хочешь жить - умей вертеться.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от mv 09.07.2009 0:17:29  

Re: Предлагайте - С vs C++ vs List vs ?

> cat foo.stp

не , это костыль и даже не костыль - это просто обман.
такой себе фокус-покус ...

*** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от elipse 09.07.2009 0:32:54  
mv

Re: Предлагайте - С vs C++ vs List vs ?

> не , это костыль и даже не костыль - это просто обман. такой себе фокус-покус ...

Можно и без stap, но используя тот же механизм, сделать. Других вариантов вообще не видно пока...

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от tailgunner 09.07.2009 0:04:33  
Absurd

Re: Предлагайте - С vs C++ vs List vs ?

>> Что-то предусматривать заранее это бесполезная трата времени

>Точно, а любую программу надо начинать писать с printf("Hello. world!\n");

Надо начинать с реализации одной из подсистем а не с той жопы на которую планируется натянуть весь проект.

>> Что-то начинать от строительства инфраструктуры это замечательный способ провалить проект, не более.

>Ну почему же, некоторые люди знают, что пишут, и что им для этого надо.

Да, им наверное нужна целая ОС в которой сбоку будет приклеена маленькая сопелька ради которой собственно все и затевалось.

*** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от Absurd 09.07.2009 1:48:53  

Re: Предлагайте - С vs C++ vs List vs ?

> начинать с реализации одной из подсистем а не с той жопы на которую планируется натянуть весь проект.

Блестящее техническое определение. Иди преподавать методологию разработки ПО.

> им наверное нужна целая ОС в которой сбоку будет приклеена маленькая сопелька ради которой собственно все и затевалось.

В общем, да. У тебя с этим проблемы? Предпочитаешь работать на голом железе?

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от tailgunner 09.07.2009 1:53:50  
mv

Re: Предлагайте - С vs C++ vs List vs ?

> В общем, да. У тебя с этим проблемы? Предпочитаешь работать на голом железе?

Absurd, наверное, про то, что нужно начинать писать код непосредственно задачи, а не изобретать велосипедный парк в виде своей оси, компилятора, етц.

***** ()
[#] Ответ на: Re: Предлагайте - С vs C++ vs List vs ? от Cy6erBr4in 09.07.2009 22:54:03  
jtootf

Re: Предлагайте - С vs C++ vs List vs ?

>Делается "на раз" на Erlang :))

а на Erlang/OTP уже сделано - в gen-server; на Tcl тоже ручного заката солнца не требует

***** ()