Мне нужно выбрать интересную тему для курсовика по программированию (желательно так или иначе связанную с шифрованием).
Мне предложили такую тему:
"Применение шаблонного метапрограммирования как способ шифрования исходного кода на С++."
Но я плохо представляю для чего вообще существует метапрограммирование.
Прошу совета:
— Хорошая ли это тема?
— По силам ли мне написать что нить приличное за пару месяцев?
И вообще, просьба, кто неплохо знаком с метапрограммированием, то ссылочки давайте и вкратце инфу о том, с чем мне придется иметь дело...
О себе скажу, что учусь на 2м курсе. Пишу на Visual_C++, знаю апи, мфс ща осваиваю..
— Реально ли, имея эти знания, энтузиазм и два месяца, наваять нормальный курсач?
Заранее благодарю всех.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, VladD2, Вы писали:
VD>>Дело в том, что "Настоящий программист" — это герой мифический.
ГВ>А где ссылка на википедию?
Здравствуйте, 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
Здравствуйте, tonchitos, Вы писали:
T>Ох, согласна полностью...Это все лень — мерзавка..
Лень это главное свойство хорошего программиста. Вобще хороший и трудолюбивый программист вещи взаимосключающие.
Ибо трудолюбивый будет сидеть и долбить код тоннами, а ленивый подумает как сделать тоже самое но без тонны кода.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndreiF, Вы писали:
FDS>>Не так. Настоящий программист должен быть написан на Лиспе с использованием концепции ленивых вычислений
AF>Чтобы непредсказуемо пожирал ресурсы и изъяснялся на маловразумительном диалекте? Нет, не надо нам такого программиста
А кто "вас" спрашивать-то собирается?!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, tonchitos, Вы писали:
T>Мне предложили такую тему: T>"Применение шаблонного метапрограммирования как способ шифрования исходного кода на С++."
Автора!!!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, tonchitos, Вы писали:
T>А если связанную с метапрограммированием? Или лучше туда не соваться, если у мя всего 2 месяца и я ничего о метапр-и не знаю?
Метапрограммирование на C++ -- это вообще сложная тема, на которую есть разные взгляды. Мой, в частности,
состоит в том, что не стоит им заниматься вовсе, т.к. не предназначен C++ в своем нынешнем виде к подобным вещам. Тем более, что для метапрограммирования нужны серьезные знания в C++ и его шаблонах. Не имея подобных знаний расчитывать на достижение какого-то положительного эффекта за два месяца (при том, что и остальную учебу никто не отменял) я бы не стал.
T>От: VladD2
T>>- По силам ли мне написать что нить приличное за пару месяцев?
V>>-Думаю, по силам. Дело в том, что тут как раз чем меньше опыта, тем мощьнее можно получить эффект. T>А почему? Просто как-то не верится... эффект вроде всегда проперционален опыту..
Стеб здесь состоит вот в чем: даже если человек имеет большие познания и солидный опыт программирования на C++, сложный шаблонный код просто-напросто превращает программу в криптотекст, в котором даже сам автор не всегда способен разобраться. Если же знаний/опыта недостаточно, то разультат окажется еще более суровым -- полученный криптотекст вообще никто не будет способен понимать.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, FDSC, Вы писали:
FDS>Влад, извини, не понял. Что получается само собой? Шифрование исходного кода при использовании метапрограммирования?
При использовании метапрограммирования на шаблонах С++.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Геннадий Васильев, Вы писали:
A>>>>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать — ГВ>>>Да брось. Это просто шикарно! A>>Если хочешь дискредитировать идею — то да.
ГВ>Ты про которую?
Из разговора же ясно — срать в ...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, tonchitos, Вы писали:
T>"Применение шаблонного метапрограммирования как способ шифрования исходного кода на С++."
В качестве курсовика можешь дать преподавателю код Boost.Spirit или Boost.Bind вместе с Boost.Preprocessor
Здравствуйте, tonchitos, Вы писали:
T>- По силам ли мне написать что нить приличное за пару месяцев?
Думаю, по силам. Дело в том, что тут как раз чем меньше опыта, тем мощьнее можно получить эффект.
А вообще, если ты не прикалываешся, а тебе и правда такую тему для курсача дали, то тот кто это сделал был очень веселым человеком. Ему бы в Камеди-Клаб или вместо Петросяна на телевидение. А то они совсем уж выдохлись и жанр позорят.
Если ты до сих пор не понял, то автор этого предложения эдак тонко постебался сразу над твоими знаниями и над С++, точнее того что из него пытаются извернуть пытаясь добиться того, что в нем напрямую не поддерживается.
С++ напрямую поддерживаем метапрограммирование только на уровне препроцессора. Это убого и чревато граблями. Так вот народ извернулся и попытался использовать тот факт, что система типов С++ в сочетании с особенностями воплощения кода шаблонами выраждается в полную по Тюрингу машину вычислений (иными словами эдакий встроенный язык программирования). Забавно, что этот язык является функциональным языком программирования и поддерживает хитрую концепцию паттерн-матчинг. Одако язык дико ограниченный и убогий (не выразительный). В купе с отсуствием возможности номально взаимодействовать с "внешним миром" это порождает весьма запутанные решения.
Конечно нитко не использует метапрограммирование как способ шифрования. Это получается само собой.
О том, что же такое метапрограммирование ты можешь найти ответ в википедии.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Лень это главное свойство хорошего программиста.
Не согласен. Ленивый программист — плохой программист.
WH> Вобще хороший и трудолюбивый программист вещи взаимосключающие. WH>Ибо трудолюбивый будет сидеть и долбить код тоннами, а ленивый подумает как сделать тоже самое но без тонны кода.
Не нужно путать понятие программиста и кодера. Хороший программист (ключевое слово "ХОРОШИЙ") никогда в жизни не будет бездумно писать тонны кода, это участь молодого неопытного программиста, или ЛЕНИВОГО взрослого программиста, который изза своей лени выше уровня кодера никогда не сможет поднятся. Хороший программист сможет найти оптимальное решение для поставленной задачи с учетом временных рамок, особенностей реализации и требуемых результатов. И даже если оптимальным вариантом будет написать много кода, он так и поступит, потому что экономия в объеме исходного кода это НЕ ВСЕГДА правильное и оптимальное решение.
Здравствуйте, WolfHound, Вы писали:
WH>Кода должно быть так мало как позволяет твой интелект и инструмент который ты используешь.
Есть еще такое понятие как "экономическая целесообразность". Если тебе к завтрашнему дню нужна утилита, то, возможно, более оптимальным является "нахачить по-быстренькому" без архитектурных изысков и метапрограммирования, а возможно даже (о ужас) и с копипастом.
Так что к интеллекту и инструментам я бы добавил время и деньги.
Здравствуйте, Alxndr, Вы писали:
A>Есть еще такое понятие как "экономическая целесообразность". Если тебе к завтрашнему дню нужна утилита, то, возможно, более оптимальным является "нахачить по-быстренькому" без архитектурных изысков и метапрограммирования, а возможно даже (о ужас) и с копипастом.
How to Recognize If an Application Will Be Long Lasting
Speaking of long-lasting applications, I especially remember one particular application I was asked to build. A global data communication service provider asked me to build a preliminary help desk application to be used at their new office in Sweden. Time was tightthey needed it the next day so that they weren't sitting there with paper and pen in their high-tech office when the press came to the opening day. Because it was going to be exchanged for a company policy standard application just a few weeks later, however, they told me that building it well wasn't important.
Yep, you guessed right. The quick-and-dirty application I built was still being used in production five years later. Sure, we improved it a lot, but I couldn't convince them to change from the platform I started using to something more suitable for a mission-critical application.
(с) Applying Domain-Driven Design and Patterns... By Jimmy Nilsson
Это я к тому, что в долгосрочной перспективе экономическая целесообразность может отличаться от ее же в краткосрочной перспективе.
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Здравствуйте, Mirrorer, Вы писали:
M>Это я к тому, что в долгосрочной перспективе экономическая целесообразность может отличаться от ее же в краткосрочной перспективе.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FDSC, Вы писали:
FDS>>Влад, извини, не понял. Что получается само собой? Шифрование исходного кода при использовании метапрограммирования? WH>При использовании метапрограммирования на шаблонах С++.
"При использовании метапрограммирования на шаблонах С++" получается что? Шифрование исходного кода?
Здравствуйте, Геннадий Васильев, Вы писали:
AF>>Чтобы непредсказуемо пожирал ресурсы и изъяснялся на маловразумительном диалекте? Нет, не надо нам такого программиста
ГВ>А кто "вас" спрашивать-то собирается?!
Дело в том, что "Настоящий программист" — это герой мифический.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Дело в том, что "Настоящий программист" — это герой мифический.
А где ссылка на википедию?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
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
Здравствуйте, FDSC, Вы писали:
VD>>Конечно нитко не использует метапрограммирование, как способ шифрования. Это получается само собой.
FDS>Влад, извини, не понял. Что получается само собой? Шифрование исходного кода при использовании метапрограммирования?
Здравствуйте, tonchitos, Вы писали:
T>Ага...чтобы он мне неуд влепил, да? Я, кстати, не сомневаюсь в квалифицированности препа — по лекциям видно. Жаль тока, что ему не до студентов...он говорит — пишите че хотите, хоть ворд переписывайте, мне все равно.. А я вообще люблю, когда мне дают задание, а я его выполняю..Как сказал один мой знакомый — придумать тему для курсовика- это уже полработы..
Мой совет — учись самостоятельности, если хочешь быть действительно хорошим программистом, а не "тупым кодером", то без этого не куда. Жить за счёт решений других людей — легко, только вот ни разу не эффективно (но тут уже вопрос хочешь ли ты добиваться действительно чего-то значимого)
Правда всё это злостный оффтопик и в "О жизни"
Здравствуйте, sharcUs, Вы писали:
U>Не нужно путать понятие программиста и кодера.
Кодеры... архитекторы... это все бла-бла-бла.
Есть программисты и те кто под них косят. Так вот тех кто косит я вобще не рассматриваю.
U>И даже если оптимальным вариантом будет написать много кода, он так и поступит, потому что экономия в объеме исходного кода это НЕ ВСЕГДА правильное и оптимальное решение.
Много кода оптимальным не бывает. Доказано индусами.
Кода должно быть так мало как позволяет твой интелект и инструмент который ты используешь.
Для сокращения кода есть много приемов. От архитектурных изысков до метапрограммирования (кодогенараторов если метапрограммирования нет).
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Alxndr, Вы писали:
A>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —
Да брось. Это просто шикарно!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, tonchitos, Вы писали:
T> Мне нужно выбрать интересную тему для курсовика по программированию (желательно так или иначе связанную с шифрованием). T> Мне предложили такую тему: T> "Применение шаблонного метапрограммирования как способ шифрования исходного кода на С++."
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, tonchitos, Вы писали:
T>>Мне предложили такую тему: T>>"Применение шаблонного метапрограммирования как способ шифрования исходного кода на С++."
ГВ>Автора!!!
Здравствуйте, c-smile, Вы писали:
ГВ>>Автора!!!
CS>А морду бить не будешь?
Да ну что ты?! Таких беречь нужно!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Cyberax, Вы писали:
C>>В качестве курсовика можешь дать преподавателю код Boost.Spirit или Boost.Bind вместе с Boost.Preprocessor
VD>Ага. Только морду при этом нужно по серьезнее и описание на несколько страниц.
VD>Но вообще, препод у них молодец. Так подколть. Уважаю!
Да препод тут не причем... На форуме на каком-то... Ну я ж говорила, что вообще не имею представления о шаблонном метапрограммировании.. Так что бывает..
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, tonchitos, Вы писали:
T>>- По силам ли мне написать что нить приличное за пару месяцев?
VD>Думаю, по силам. Дело в том, что тут как раз чем меньше опыта, тем мощьнее можно получить эффект.
Спасибо... С той темой все понятно. ))
Ну а какого типа тему в этой области можно брать второкурснику?
Здравствуйте, tonchitos, Вы писали:
T>Ну а какого типа тему в этой области можно брать второкурснику?
Если связанную с шифрованием, то сильно зависит от уровня второкурсника. Начиная от самостоятельной реализации какого-нибудь криптоалгоритма до реализации какого-нибудь криптопротокола. Например, протокола аутентификации с симметричными шифрами Нидхема-Шредера (http://en.wikipedia.org/wiki/Needham-Schroeder). Нужно будет создать клиентов Алису/Боба и собственный центр распределения ключей KDC, взаимодействующих между собой через TCP/IP (или пайпы). Цель этого дела:
* разобраться с проблемой аутентификации и распределения ключей;
* разобраться с существующими крипто-библиотеками (Crypto++, Botan, Cryptlib) или CryptoAPI, если речь идет о Windows.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
T>>Ну а какого типа тему в этой области можно брать второкурснику?
E>Если связанную с шифрованием, то сильно зависит от уровня второкурсника. Начиная от самостоятельной реализации какого-нибудь криптоалгоритма до реализации какого-нибудь криптопротокола. Например, протокола аутентификации с симметричными шифрами Нидхема-Шредера (http://en.wikipedia.org/wiki/Needham-Schroeder). Нужно будет создать клиентов Алису/Боба и собственный центр распределения ключей KDC, взаимодействующих между собой через TCP/IP (или пайпы). Цель этого дела: E>* разобраться с проблемой аутентификации и распределения ключей; E>* разобраться с существующими крипто-библиотеками (Crypto++, Botan, Cryptlib) или CryptoAPI, если речь идет о Windows.
Спасибо большое.
А если связанную с метапрограммированием? Или лучше туда не соваться, если у мя всего 2 месяца и я ничего о метапр-и не знаю?
От: VladD2
T>- По силам ли мне написать что нить приличное за пару месяцев?
V>-Думаю, по силам. Дело в том, что тут как раз чем меньше опыта, тем мощьнее можно получить эффект.
А почему? Просто как-то не верится... эффект вроде всегда проперционален опыту..
Здравствуйте, tonchitos, Вы писали:
T>Да препод тут не причем... На форуме на каком-то... Ну я ж говорила, что вообще не имею представления о шаблонном метапрограммировании.. Так что бывает..
Кстати... тогда есть возможность препода на вшивость проверить.
Берешь исходники Буста (это тебе тут раскажут где брать)... делаешь красивое введение. Мол то да се, защита интеллектуальных и авторских прав... трали вали... пасатижи... В общем, много наукобразной (не путать с наукоемкой) фигни. Далее в оставшейся части распечатываешь исходники и в конце делаешь вывод, что цель достикается отлично.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, tonchitos, Вы писали:
T>Спасибо... С той темой все понятно. )) T>Ну а какого типа тему в этой области можно брать второкурснику?
Желательно закомую. Вообще метапрограммирование, т.е. написание программ генерирующих другие программы — это очень интересная тема. Но насколько ты с ней справишся, я не знаю.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, tonchitos, Вы писали:
T>>Да препод тут не причем... На форуме на каком-то... Ну я ж говорила, что вообще не имею представления о шаблонном метапрограммировании.. Так что бывает..
VD>Кстати... тогда есть возможность препода на вшивость проверить. VD>Берешь исходники Буста (это тебе тут раскажут где брать)... делаешь красивое введение. Мол то да се, защита интеллектуальных и авторских прав... трали вали... пасатижи... В общем, много наукобразной (не путать с наукоемкой) фигни. Далее в оставшейся части распечатываешь исходники и в конце делаешь вывод, что цель достикается отлично.
Ага...чтобы он мне неуд влепил, да? Я, кстати, не сомневаюсь в квалифицированности препа — по лекциям видно. Жаль тока, что ему не до студентов...он говорит — пишите че хотите, хоть ворд переписывайте, мне все равно.. А я вообще люблю, когда мне дают задание, а я его выполняю..Как сказал один мой знакомый — придумать тему для курсовика- это уже полработы..
вот такие пироги..
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, tonchitos, Вы писали:
T>>Ага...чтобы он мне неуд влепил, да? Я, кстати, не сомневаюсь в квалифицированности препа — по лекциям видно. Жаль тока, что ему не до студентов...он говорит — пишите че хотите, хоть ворд переписывайте, мне все равно.. А я вообще люблю, когда мне дают задание, а я его выполняю..Как сказал один мой знакомый — придумать тему для курсовика- это уже полработы..
К>Мой совет — учись самостоятельности, если хочешь быть действительно хорошим программистом, а не "тупым кодером", то без этого не куда. Жить за счёт решений других людей — легко, только вот ни разу не эффективно (но тут уже вопрос хочешь ли ты добиваться действительно чего-то значимого) К>Правда всё это злостный оффтопик и в "О жизни"
Ох, согласна полностью...Это все лень — мерзавка..
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, c-smile, Вы писали:
ГВ>>>Автора!!!
CS>>А морду бить не будешь?
ГВ>Да ну что ты?! Таких беречь нужно!
Ген, а Ген, а чегой-та мне некий сарказм слышится в твоем предложении?
Здравствуйте, c-smile, Вы писали:
ГВ>>Да ну что ты?! Таких беречь нужно!
CS>Ген, а Ген, а чегой-та мне некий сарказм слышится в твоем предложении?
Ну... (Вот и выдумывай следующую реплику )
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, WolfHound, Вы писали:
WH>Ибо трудолюбивый будет сидеть и долбить код тоннами, а ленивый подумает как сделать тоже самое но без тонны кода.
IMHO, лень бывает 2х типов: продуктивная и непродуктивная.
Продуктивная — когда тебе лень долбить код тоннами, или выполнять одно и то же действие как дятлу и ты пишешь шаблон/кодогенератор, скрипт, whatever.
Непродуктивная — когда тебе лень подумать, напрячься и сделать что-то, что повысит продуктивность труда в долгосрочной перспективе...
Здравствуйте, Alxndr, Вы писали:
A>Непродуктивная — когда тебе лень подумать, напрячься и сделать что-то, что повысит продуктивность труда в долгосрочной перспективе...
Это уже не лень, это просто глупость и недальновидность. Так что настоящий программист должен быть умным и ленивым
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, Alxndr, Вы писали:
A>>Непродуктивная — когда тебе лень подумать, напрячься и сделать что-то, что повысит продуктивность труда в долгосрочной перспективе...
AF>Это уже не лень, это просто глупость и недальновидность. Так что настоящий программист должен быть умным и ленивым
Не так. Настоящий программист должен быть написан на Лиспе с использованием концепции ленивых вычислений
Здравствуйте, Mirrorer, Вы писали:
M>Это я к тому, что в долгосрочной перспективе экономическая целесообразность может отличаться от ее же в краткосрочной перспективе.
Зато есть другой вопрос. Предположим, что тебе нужно доказать начальству, что ты предложил правильную концепцию написания некоторой системы. Ты быстренько, по концепции "тонны кода", не думая ни о чём пишешь прототип (думая будет дольше). Он работает, ты получаешь людей, время на разработку архитектуры и т.п.
Так что для того, что бы была эк. целесообразность в долгосрочной перспективе сначала нужно обеспечить тактическую победу для начала работ.
Здравствуйте, FDSC, Вы писали:
FDS>Зато есть другой вопрос. Предположим, что тебе нужно доказать начальству, что ты предложил правильную концепцию написания некоторой системы. Ты быстренько, по концепции "тонны кода", не думая ни о чём пишешь прототип (думая будет дольше).
Хех. Была такая ситуация на текущем проекте. Захотел заказчик мегафичу. Как ты говоришь на коленке налабал прототип. прототип заказчику понравился даже очень. Но.
FDS>Он работает, ты получаешь людей, время на разработку архитектуры и т.п.
Описанного тобой не было.
А было Re: Что не так с юнит-тестами
Здравствуйте, Alxndr, Вы писали:
A>Есть еще такое понятие как "экономическая целесообразность". Если тебе к завтрашнему дню нужна утилита, то, возможно, более оптимальным является "нахачить по-быстренькому" без архитектурных изысков и метапрограммирования, а возможно даже (о ужас) и с копипастом.
Дык это ты говоришь о примтивных задачках. В них кода по определиню много быть не может. А если у тебя таким же образом будет сделана сложная система, то вариантов будет тлоько два 1) вы ее вообще не сдадите, 2) вы ее кое как сдадите с огромным опозданием, а потом будуте креститься перед внесением каждой строчки кода.
Так вот. Для сложных задач решение "взыть числом" конечно тоже работает. Но вот с точки зрения той самой "экономическая целесообразность" оно ни в какие ворота не лезет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FDSC, Вы писали:
FDS>Смотрите, пока не удалили
Ну, с Днём космонавтики!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
A>>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать —
ГВ>Да брось. Это просто шикарно!
Здравствуйте, Alxndr, Вы писали:
A>>>Это, наверное, смешно, но срать в энциклопедии только потому, что ты это можешь сделать — ГВ>>Да брось. Это просто шикарно! A>Если хочешь дискредитировать идею — то да.
Ты про которую?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!