суббота, 26 марта 2011 г.
Рубен Люциус Голдберг
Кто этот человек?
Есть два способа достижения целей – простой и трудный. И вот что удивительно: большинство людей всегда выбирают именно тот, что сложнее (c)
Есть два способа достижения целей – простой и трудный. И вот что удивительно: большинство людей всегда выбирают именно тот, что сложнее (c)
среда, 16 марта 2011 г.
Параллельное присваивание
На примере языка Lua.
-- Multiple assignments allows one line to swap two variables.
print(a,b)
a,b=b,a
print(a,b)
-------- Output ------
1 2
2 1
-- Multiple assignments allows one line to swap two variables.
print(a,b)
a,b=b,a
print(a,b)
-------- Output ------
1 2
2 1
Неплохо, так то..
Т.е. на каком-нибудь другом языке программирования, который не поддерживает параллельное присваивание надо будет написать что-то вроде:
t = a
a = b
b = t
Т.е. на каком-нибудь другом языке программирования, который не поддерживает параллельное присваивание надо будет написать что-то вроде:
t = a
a = b
b = t
пятница, 11 марта 2011 г.
четверг, 10 марта 2011 г.
Изучая иностранные языки
Making a basic .NET COM component is very straightforward.
Чито? Straightforward?? Что за страшное слово!? Когда видишь фразу COM component в связке со словом straightforward, думаешь, что открыв словарь ты увидишь что-то вроде "straightforward - сложно, блядь. очень".
straightforward - простой.
Чито? Straightforward?? Что за страшное слово!? Когда видишь фразу COM component в связке со словом straightforward, думаешь, что открыв словарь ты увидишь что-то вроде "straightforward - сложно, блядь. очень".
straightforward - простой.
среда, 9 марта 2011 г.
Язык программирования C и шуточки
char **argv
argv: указатель на указатель char
int (*daytab)[13]
daytab: указатель на массив[13] типа int
int *daytab[13]
daytab: массив[13] указателей на int
void *comp()
comp: функция, возвращающая указатель на void
void (*comp)()
comp: указатель на функцию, возвращающую void
char (*(*x())[])()
x: функция, возвращающая указатель на массив[] указателей на функцию, возвращающую char
char (*(*x[3])())[5]
x: массив[3] указателей на функцию, возвращающую указатель на массив[5] типа char
argv: указатель на указатель char
int (*daytab)[13]
daytab: указатель на массив[13] типа int
int *daytab[13]
daytab: массив[13] указателей на int
void *comp()
comp: функция, возвращающая указатель на void
void (*comp)()
comp: указатель на функцию, возвращающую void
char (*(*x())[])()
x: функция, возвращающая указатель на массив[] указателей на функцию, возвращающую char
char (*(*x[3])())[5]
x: массив[3] указателей на функцию, возвращающую указатель на массив[5] типа char
вторник, 8 марта 2011 г.
inline-функции и макроподстановки
inline-функции:
При объявлении функции внутри программы C++ позволяет вам предварить имя функции ключевым словом inline. Если компилятор C++ встречает ключевое слово inline, он помещает в выполнимый файл (машинный язык) операторы этой функции в месте каждого ее вызова. Таким образом, можно улучшить читаемость ваших программ на C++, используя функции, и в то же время увеличить производительность, избегая издержек на вызов функций.
При объявлении функции внутри программы C++ позволяет вам предварить имя функции ключевым словом inline. Если компилятор C++ встречает ключевое слово inline, он помещает в выполнимый файл (машинный язык) операторы этой функции в месте каждого ее вызова. Таким образом, можно улучшить читаемость ваших программ на C++, используя функции, и в то же время увеличить производительность, избегая издержек на вызов функций.
макроподстановки:
#define max(A, B) ((A) > (B) ? (A) : (B))
Хотя внешне он напоминает вызов функции, на самом деле max разворачивается в тексте путём подстановки. Вместо формальных параметров (A или B) будет подставлены фактические аргументы, обнаруженные в тексте. Возьмем, например, следующий макровызов:
x = max (p+q, r+s);
При компиляции он будет заменён на следующую строку:
x = ( (p+q) > (r+s) ? (p+q) : (r+s));
...
Если внимательно изучить способ подстановки макроса max, можно заметить ряд "ловушек". Так, выражения в развернутой форме макроса вычисляются дважды, и это даст неправильный результат, если в них присутствуют побочные эффекты наподобие инкремента-декремента или ввода вывода. Например, в следующем макровызове большее значение будет инкрементаровано два раза:
max(i++; j++)
(c)The C Programming Language
понедельник, 7 марта 2011 г.
Тестовое задание
После пятиминутного собеседования в одну очень-очень известную компанию мне сказали, что отправят тестовое задание по C++! (weeehoooo) Как же я удивился, что программист на C++ должен знать как устроено приложение на WinAPI, как писать приложения на ATL, WTL, да ещё и с использованием GDI+ - какой же я наивный чукотский мальчик.


Подписаться на:
Сообщения (Atom)



