Re[13]: метапрограммирование...совет начинающему..
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 11.04.07 15:59
Оценка: 1 (1) +1 -1 :))
Здравствуйте, AndreiF, Вы писали:

FDS>>Не так. Настоящий программист должен быть написан на Лиспе с использованием концепции ленивых вычислений


AF>Чтобы непредсказуемо пожирал ресурсы и изъяснялся на маловразумительном диалекте? Нет, не надо нам такого программиста


А кто "вас" спрашивать-то собирается?!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[14]: метапрограммирование...совет начинающему..
От: Mirrorer  
Дата: 11.04.07 18:04
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Зато есть другой вопрос. Предположим, что тебе нужно доказать начальству, что ты предложил правильную концепцию написания некоторой системы. Ты быстренько, по концепции "тонны кода", не думая ни о чём пишешь прототип (думая будет дольше).


Хех. Была такая ситуация на текущем проекте. Захотел заказчик мегафичу. Как ты говоришь на коленке налабал прототип. прототип заказчику понравился даже очень.
Но.

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

Описанного тобой не было.
А было Re: Что не так с юнит-тестами
Автор: Mirrorer
Дата: 26.07.06

... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[4]: метапрограммирование...совет начинающему..
От: c-smile Канада http://terrainformatica.com
Дата: 11.04.07 19:17
Оценка: :))
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FDSC, Вы писали:


FDS>>Влад, извини, не понял. Что получается само собой? Шифрование исходного кода при использовании метапрограммирования?

WH>При использовании метапрограммирования на шаблонах С++.

"При использовании метапрограммирования на шаблонах С++" получается что? Шифрование исходного кода?

Или ты просто разместил объяву?
Re[14]: метапрограммирование...совет начинающему..
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.04.07 23:25
Оценка: +1 :)
Здравствуйте, Геннадий Васильев, Вы писали:

AF>>Чтобы непредсказуемо пожирал ресурсы и изъяснялся на маловразумительном диалекте? Нет, не надо нам такого программиста


ГВ>А кто "вас" спрашивать-то собирается?!


Дело в том, что "Настоящий программист" — это герой мифический.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: метапрограммирование...совет начинающему..
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.04.07 23:25
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Есть еще такое понятие как "экономическая целесообразность". Если тебе к завтрашнему дню нужна утилита, то, возможно, более оптимальным является "нахачить по-быстренькому" без архитектурных изысков и метапрограммирования, а возможно даже (о ужас) и с копипастом.


Дык это ты говоришь о примтивных задачках. В них кода по определиню много быть не может. А если у тебя таким же образом будет сделана сложная система, то вариантов будет тлоько два 1) вы ее вообще не сдадите, 2) вы ее кое как сдадите с огромным опозданием, а потом будуте креститься перед внесением каждой строчки кода.

Так вот. Для сложных задач решение "взыть числом" конечно тоже работает. Но вот с точки зрения той самой "экономическая целесообразность" оно ни в какие ворота не лезет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: метапрограммирование...совет начинающему..
От: AndreiF  
Дата: 12.04.07 03:03
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А кто "вас" спрашивать-то собирается?!


А кого надо спрашивать? "Вас"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: метапрограммирование...совет начинающему..
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.04.07 03:28
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>Дело в том, что "Настоящий программист" — это герой мифический.


А где ссылка на википедию?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[16]: метапрограммирование...совет начинающему..
От: FDSC Россия consp11.github.io блог
Дата: 12.04.07 08:00
Оценка: 76 (5) -4 :))) :))) :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, VladD2, Вы писали:


VD>>Дело в том, что "Настоящий программист" — это герой мифический.


ГВ>А где ссылка на википедию?


Пожалуйста

здесь



Смотрите, пока не удалили
Re[17]: метапрограммирование...совет начинающему..
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 12.04.07 08:23
Оценка: +4
Здравствуйте, FDSC, Вы писали:

FDS>здесь


Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —
Re[17]: метапрограммирование...совет начинающему..
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.04.07 08:29
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Смотрите, пока не удалили


Ну, с Днём космонавтики!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[18]: метапрограммирование...совет начинающему..
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.04.07 08:40
Оценка: -1
Здравствуйте, Alxndr, Вы писали:

A>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —


Да брось. Это просто шикарно!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[19]: метапрограммирование...совет начинающему..
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 12.04.07 08:43
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

A>>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —


ГВ>Да брось. Это просто шикарно!


Если хочешь дискредитировать идею — то да.
Re[20]: метапрограммирование...совет начинающему..
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.04.07 08:48
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>>>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —

ГВ>>Да брось. Это просто шикарно!
A>Если хочешь дискредитировать идею — то да.

Ты про которую?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: метапрограммирование...совет начинающему..
От: Pavel Dvorkin Россия  
Дата: 12.04.07 10:53
Оценка: 67 (7) :))) :))) :)))
Здравствуйте, eao197, Вы писали:

E>Стеб здесь состоит вот в чем: даже если человек имеет большие познания и солидный опыт программирования на C++, сложный шаблонный код просто-напросто превращает программу в криптотекст, в котором даже сам автор не всегда способен разобраться. Если же знаний/опыта недостаточно, то разультат окажется еще более суровым -- полученный криптотекст вообще никто не будет способен понимать.


Может, это не совсем метапрограммирование, к тому же это не С++, а только С, но не могу удержаться, чтобы ее сюда не запостить. (С) не знаю чьи.


/*
 *   Вот программа, занявшая первое  место ("Best of Show") в этом году.  Она
 * вызывается с необязательным числовым параметром (по умолчанию 2) и  играет
 * в шахматы.  Параметр определяет глубину  просмотра  (при  глубине большей,
 * чем 3,  она будет думать  очень долго). Ходы  задаются двумя восьмеричными
 * числами (откуда куда  - см. доску в  начале игры, например, "e2-e4"  нужно
 * будет вводить как "64 44"), в приглашении к приему указывается  количество
 * просмотренных ходов  и оценка позиций  - своей и  противника, т.е.   Вас).
 *
 * Правила игры несколько упрощены - пешки превращаются только в ферзей,  нет
 * взятия на проходе и длинной рокировки (мне и короткую сделать не удалось),
 *   а   также   контроля   правил    повторения   позиций   и   50    ходов.
*/
#include <stdio.h>
#include <stdlib.h>

#define m(x)(x<0?-1:!!x)
#define g tj()-J
#define a(x)(x<0?-x:x)
#define h(x)((x)<=K?x:N-(x))
#define f 9999
#define A return
#define H printf(
#define R double
#define U int
#define V for
#define b else
#define u while
#define B if
U v,w,Y= -1,W,J,p,F,o=f,M,N,K,X,YY,_,P[f],s(); typedef U(*L)(); L q[f]; tj(){
U S=m(v)+(m(w)<<K); B(!S)A J; V(v=W+S; v!=J&&!q[v]; v+=S); A v; } k(){ _=K; A
v?a(v)>1||w-Y||!q[J]:(w-Y&&(w-Y*2||q[W+Y*(N+1)]|| (J>>K)-K+(Y-1)/ 2))||q[J];
} z(){ _=5; A v*w||g; } e(){ _= -2;
A(v*v*v-v||w*w*w-w)&&(J-W-2||(W&N)-4||(W>>K!=(Y-1?N:0))||
q[W+1]||q[W+2]||q[W+K]!=z||P[W+K]*Y<0); } R VR(){ int PZ=0x7fff;
A(R)(rand()&PZ)/(R)PZ; } l(){ _=K+1; A(v*w&&a(v)-a(w))||g; } R UC(){ R i=0,d;
u((i+=d=VR())<1.0); A d; } c(){ _= -11; A a(v)-a(w)||g; } I(ur,n,x){ W=ur;
J=n; B(P[W]!=Y||P[J]==Y)A J+1; v=(J&N)-(W&N); w=(J>>K)-(W>>K); A
q[W]()||(x&&QL(W,J,s)); } TT(W){ v=w=0; A q[W]()+K; } s(){ U j= -1,i; Y= -Y;
V(i=0; i<M; ++i){ B(j<0&&P[i]== -Y&&TT(i)&&_== -2) { j=i; i= -1; } b
B(j>=0&&!I(i,j,0))A Y= -Y; } A!(Y= -Y); } bb(){ _=1; A a(v*w)-2; } uv(){
V(v=0; v<f; ++v){ B(h(v>>K)==0){ U S=h(v&N);
q[v]=!S?z:(S==1?bb:(S==2?c:(v&N>K?l:e))); } b B(h(v>>K)==1)q[v]=k; b q[v]=0;
P[v]=!!q[v]*(28-v); } } y(){ U G=Y,i; J=0; V(i=0; i<M; ++i){
i%8||H"\n%4o ",i); B((Y=P[i]=m(P[i]))&& TT(i))H"%c ",_+93+Y*16); b H"- "); }
H"\n    "); do H"%2d",i++&N); u(i&N); Y=G; H"\n"); } O(W,J){
B((q[J]=q[W])==k&&h(J>>K)==0)q[J]=l; B(q[W]==e)B(J-W==2)O(J+1,J-1); b
B(W-J==2)O(W-1,W+1); P[J]=P[W]; q[W]=0; P[W]=0; } QL(W,J,D)L D; { U
HQ=P[J],YX; L AJ=q[J],XY=q[W]; O(W,J); YX=D(); O(J,W); q[J]=AJ; q[W]=XY;
P[J]=HQ; A YX; } C(){ U i,j,BZ=0; V(i=0; i<M; ++i){ L Z=q[i]; B(Z){ U
r=h(i>>K)+h(i&N),G=Y, S=Z==z?88:(Z==k?11 +r+(P[i]<0?N-(i>>K):(i>>K)):
(Z==l?124-((YY<8&&((i&N)!=K|| (i>>K)!=(P[i]>0?0:N)))?M:0):
(Z==c?41+r:(Z==e?f-r-r:36+r+r)))); Y=P[i]; V(j=0; j<M;
++j)B(!I(i,j,0))S+=(P[j]?5:1); BZ+=G==Y?S:-S; Y=G; } }
B(!(++X&M-1))write(1,".",1); A BZ; } PX(){ U i,Q=0,XP=0,JZ=M*M,E= -f,t,S=o;
B(!F--)A++F+C(); V(i=0; i<JZ; ++i)B(!I(i>>K+K,i&M-1,1)){ Y= -Y; o= -E; t=
-QL(i>>K+K,i&M-1,PX); Y= -Y; B(t>E){ ++XP; Q=i; E=t; B(E>=S) A++F,E; } }
B(!XP)E=s()?-f+1:0; p=Q; A++F,E; } RZ(){ U i,j,T=0; V(; ; ){ y(); o=f; do{
H"\n%d %d %d %s ",X,T,C(),s()?"!":">"); fflush(stdout); }
u(scanf("%o%o",&i,&j)!=2||I(i,j,1)); O(i,j); y(); X=0; ++YY; Y= -Y; T=PX();
i=p>>(K<<1); j=p&(M-1); B(I(i,j,1)){ H"Rats!\n"); A; } O(i,j); Y= -Y;
B(T>M*M)H"\nHar har.\n"); } } main(ac,av)char**av; { long time(),j=time(&j);
R i=0; srand((U)j); V(M=0; M<=f; ++M)i+=UC(); M=i/100; B(M&3)++M; B(M&1)--M;
V(N=1; N*N<M; ++N); K= --N/2; F=ac>1?atoi(av[1]):2; uv(); RZ(); }


P.S. Если кому-то захочется ее откомпилировать в VS — дайте файлу расширение .c
With best regards
Pavel Dvorkin
Re[21]: метапрограммирование...совет начинающему..
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.04.07 22:21
Оценка: -1 :))
Здравствуйте, Геннадий Васильев, Вы писали:

A>>>>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —

ГВ>>>Да брось. Это просто шикарно!
A>>Если хочешь дискредитировать идею — то да.

ГВ>Ты про которую?


Из разговора же ясно — срать в ...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: метапрограммирование...совет начинающему..
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 23.04.07 11:33
Оценка: 1 (1)
WolfHound,

T>>Ох, согласна полностью...Это все лень — мерзавка..

WH>Лень это главное свойство хорошего программиста. Вобще хороший и трудолюбивый программист вещи взаимосключающие.
WH>Ибо трудолюбивый будет сидеть и долбить код тоннами, а ленивый подумает как сделать тоже самое но без тонны кода.

Было дело, подобную мысль высказывал и небезызвестный Larry Wall. Естественно, данная мысль — это слишком чёрно-белый взгляд на мир, следовательно неточен:

You fail to understand the difference between passive laziness and active laziness. Passive laziness is what most people have. It's active laziness that is the virtue. It's the desire to go out and /make sure/ that you can be lazy in the future by spending just a little time writing a script now. It's thinking about time economically and acting on it.
/Daniel Gee


Indeed. See Robert A. Heinlein's short story (well, actually just a short section of his novel "Time Enough For Love: The Lives of Lazarus Long") entitled "The Tale of the Man Who Was Too Lazy To Fail". It's about a man who hated work so much that he worked very, *very* hard so he wouldn't have to do any (and succeeded).
/Rob Warnock

(comp.lang.lisp)
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.