ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Злые беседы добрых программистов | страница 4 |
|
|
|
Канал Игры Мечты: «Злые беседы добрых программистов» |
|
|
Remint 385 EGP
Рейтинг канала: 3(31) Репутация: 84 Сообщения: 1785
Зарегистрирован: 12.05.2003 |
|
2 Star'ik
Это чит! Аналогично было дело.. писал на C + вставки на asm в критических областях (спортивный интерес был).
Еще помню добивало по молодости, как излишне ретивого сторонника оптимизации, отсутсвие циклических сдвигов (криптовалку хитрую писал, и по возможности быструю). А так если хорошо представлять как работает компилятор, то можно и на чистом С/С++ ваять очень и очень быстрый код. В критических областях, на чистом асме, почти всегда конечно можно в ручную пару ходов конем сделать, но только если длительной поддержки этого кода не предполагаеться. Ну и наоборот, кривыми руками и в асме можно нарулить так, что и паскаль с его компилиром победит.
_________________ Да пребудет с вами сила... |
|
|
ZEUStiger 67 EGP
Рейтинг канала: 1(3) Репутация: 12 Сообщения: 112 Откуда: Украина - Ужгород Зарегистрирован: 08.06.2006 |
|
Новые команды
Дописываем в start.bat после set &room:
set &staff=out
Этим создаем переменную со значением out. Эта переменная будет отвечать за наличие в инвентаре предмета staff, то бишь посоха. Он будет находиться в сундуке. Теперь надо разрешить подбирать его.
Создаем examine.bat (examine - осмотреть) со следующим текстом:
@echo off
goto error
:error
echo.
echo IT SEEMS THET ERROR OCCURRED IN PROGRAM!!!
goto exit
:exit
echo.
echo What will you do?
По этому шаблону можно создавать все остальные программы. error и exit всегда должны быть в конце, а goto error после всех вопросов.
Пишем вопрос перед goto error.
if “%&room%” == “exampleroom01” goto exr01
И процедуры перед :error.
:exr01
if "%1" == "chest" goto exr01chest
goto what
:exr01chest
set &staff=in
echo You opened chest.
echo At the bottom was laying long wooden stick
echo.
echo You took object STAFF.
echo.
goto exit
:what
echo Examine WHAT?
goto exit
(Вы открыли сундук. На дне лежала длинная деревянная палка. Вы взяли объект ПОСОХ)
Мы делаем именно такую адресацию, ибо в комнате можно осматривать не только сундук, но и другие вещи. А %1 – это текст после имени файла. Допустим, мы напишем examine corner broom. Тогда corner будет %1, broom - %2 и так далее. В нашем случае надо написать examine chest, чтобы осмотреть сундук.
_________________ Что бы учёные не делали, всегда найдутся люди которые превратят любое изобретение в оружие. |
|
|
constructor_
|
|
Пару слов в догонку.
Вы спорите, какая ОС лучше?
DOS или WinXP
Win2000 или Linux?
Каждая система создавалась в свое время профессиональными программистами (даже Win95...) для вполне конкретных целей, под вполне конкретное поколение компьютеров.
С языками по аналогии, так что не будем спорить))
Я например начинал на basic (под ZX Specturm еще пробовал).
Потом появился такой монстр компьютерной промышленности, как 286 комп.. О, это было что-то с чем-то , постепенно стало быть перешел на basic for dos..
Первый 486 комп... WarCraft 2, gta, попытки написать свою игру с юнитами на pascal (for dos).. Проблемы с долгим рисованием, мука с виртуальными страницами, (экран я рисовал через SetPixel(..) )
Затем мне подарили диск с VB (for windows), через некоторое время я с него перешел на Delphi. На Delphi писал довольно долго, но серьезные дяди вокруг говорили, что это фигня, что если хочешь что-то серьезное -- ботай С.
Года 3 я терпел, потом с большим трудом начал осваивать это самый С++. Попробовал, мне понравилось)) И вот, до сих пор пишу на нем и не нарадуюсь. Кстати, добавлю, что для разработки небольших приложений через RAD он прекрасно подходит (наравне с Delphi) ((одна MFC чего стоит)).
Вместо заключения скажу, что мой друг тоже писал на Delphi.. И между прочим на нем и пишет по сей день, и изучил его значительно лучше, чем я. И трудно сказать, чего есть такого особенно в одном, и нет в другом
(перегрузка, множественное наследование, виртуальные функции, ссылки-указатели (на мой взгляд одно и тоже -- байты ), можно лишь отметить, что по-моему (и не только) pascal (Delphi) легче в изучении.
В свое времмя я его не выучил по лучше, в отличие от си, посему и остался на си).....
Ой, все мне пора.. Всем Удачи
(А еще я люблю WinXP+OpenGl+OpenAL)
|
|
|
Jurec 348 EGP
Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006 |
|
constructor_ : |
(А еще я люблю WinXP+OpenGl+OpenAL)
|
Ну можн сказать коллеги )
constructor_ : |
что по-моему (и не только) pascal (Delphi) легче в изучении.
|
Одно дело изучить основы (даже думая что это уже все что можно было бы изучить в Делфи) и говорить что он легок в изучении - другое дело действительно ЗНАТЬ Делфи. Знаю только несколько человек которые реально знают Делфи и используют его на всю катушку..
А вообще если так уж говорить как ты, то сложность в изучении языка - ничто по сравнению с сложностью изучения программирования в целом.
_________________ MOV topka, C++ |
|
|
constructor_
|
|
Ну, если быть прям таким строгим, то я и С++ НЕ ЗНАЮ.. Знание вообще вещь относительная, а все знает только 3томная документация))
И еще момент -- есть т.н. чистый язык -- т.е. по сути правила написания программы, а есть куча библиотек с функциями. Знать? значит знать синтаксис (правила), или мочь что-то написать, но не знать 2/3 особенностей ))
|
|
|
Digited 271 EGP
Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004 |
|
"Знание языка" примерно складывается из умения работать под апи одной из ос под одну из платформ, знания стандартного синтаксиса, дружбы с одним из компиляторов, опционально - умения работать в одной из интегрированных сред, ну и наличия опыта во всем вышеперечисленном... Дальше в разговорах о том, чье знание больше, а чье отсутствует, чаще всего уже идет меряние п.
|
|
|
Grebomet 1460 EGP
Рейтинг канала: 2(20) Репутация: 261 Сообщения: 4765 Откуда: Питербурх Зарегистрирован: 06.01.2003 |
|
Remint : |
Множество механизмов C/C++ введены и заточены для написания, и что не менее важно, для поддержки, по настоящему больших проектов (соответсвенно там себя и проявляют), и для возможности использовать отлаженый код повторно по максимому, с минимумом накладных расходов (в том числе и в плане быстродействия).
|
Угу, особенно в этом плане выделяется механизм шаблонов.
Или принцип, согласно которому инлайновые функции надо пихать в заголовочные файлы вместе с тельцем.
Еще очень "радует" работа с перегруженными виртуальными функциями. Добавил какой-нибудь узкоглазый китаец в базовом классе "const" в списке параметров виртуальной функции - хоппа, во всех производных классах все переопределенные функции без этого const чудесным образом перестали быть виртуальными, причем компилятор молчит как рыба. Потом сиди и ищи, что где могло поломаться в коде, который никто не трогал уже много лет...
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
Remint 385 EGP
Рейтинг канала: 3(31) Репутация: 84 Сообщения: 1785
Зарегистрирован: 12.05.2003 |
|
2 Grebomet
Чем больше свободы, тем больше возможностей "убить сибя ап стену". Свобода - кроме кучи возможностей, она самодисциплины требует. Перефразируя "Не можешь ср..., не юзай шаблоны", никто не заставляет. От этого шаблоны не становятся менее полезными, в опытных руках, и язык не становиться менее мощным. Зато с помощью шаблонов, перегрузки операторов и пр. на С++, по сути, можно реализовать функциональность и возможности любого языка, причем работать это будет зачастую даже быстрее чем в оригинале и переносимость будет лучше т.к. скажем реализацию алогола можно найти далеко не на каждой платформе, а если написать библиотеку с подобной функциональностью на С++, то юзать можно будет практически везде сочетая с возможностями всех прочих библиотек и "голого" С/C++ в одном проекте.
Безусловно, это все не даром и требует больших знаний, большего профессионализма и большей аккуратности. По сути, нужно быть хорошим специалистом в области проектирования, а не просто кодером, чтобы грамотно и в полной мере всем этим распоряжаться, с этим никто не спорит.
_________________ Да пребудет с вами сила... |
|
|
TpuCTaH 63 EGP
Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006 |
|
По поводу писькомерки о знии языков могу посоветовать почиать Страуструпа, Майерса, Степанова. По шаблонам Александреску. Много можна назвать мастодонтов. И в очередной раз признать что нифига ты язык толком не знаеш и писать на нем не умеешь.
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Star'ik 325 EGP
Репутация: 71 Сообщения: 1882 Откуда: Msk Зарегистрирован: 29.04.2003 |
|
Писать, зная как это делается, можно на любом языке. Просто мне, например, удобнее на Object Pascal. Хотя я людям помогал кое-сть и на С реализовать и на Java. Ведь суть не в языке и не в количестве слов языка, которыми ты владеешь. Даже не в количестве методов! А в умении реализовать то многообразие алгоритмов, которое уже создано, и создание своих собственных. Если просто по тупому с использованием библиотек писать что-то для чего-то - это, ИМХО, не программирование, а просто фигня... "Таких не берут в космоневты (с)"
_________________ Все хорошее когда-нибудь кончается |
|
|
Crimson 560 EGP
Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003 |
|
Просто фигня получается как раз когда программист изобретает велосипед, вместо того чтобы "тупо" использовать библиотеки. Такие космонавты в проекте нафиг не нужны.
|
|
|
TpuCTaH 63 EGP
Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006 |
|
Библиотека библиотеке рознь.
Пример .net DataTable. Если примари столбцу указать свойство автоинкремент, и при этом тип столбца, уже заданный программистом, не int16 int32 int64, то он АВТОМАТИЧЕСКИ смениться на int32. Обычно ключ ансайнт инт. Вот так вот лихо я потратил сутки своего времени на поиск ошибки. Зато stl я люблю как родного.
2Crimson перед тем как использовать библиотечные компоненты человек должен реализовать их самостоятельно(но не в групповом проекте а в личном) дабы понять принцип работы. опять же имхо. Никогда не участвовал в комерческой разработке.
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Crimson 560 EGP
Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003 |
|
TpuCTaH : |
перед тем как использовать библиотечные компоненты человек должен реализовать их самостоятельно
|
Разве что чтобы отбить у себя охоту изобретать велосипед Понимать принцип работы алгоритма однозначно полезно, но имхо лучше уж тогда залезть в существующую библиотеку и попытаться разобраться как там все устроено, чем свой вариант STL городить.
А то с таким же успехом можно сказать, что для понимания работы компилятора программист должен сам написать компилятор. И вообще, чтобы понять принцип работы компьютера, программист должен разработать микропроцессор. Чего уж мелочиться
Хотя каждый конечно все сделает по своему. Фигли, если время есть, и дури хватит... Сам так же начинал
|
|
|
YogSagot 1175 EGP
Рейтинг канала: 1(8) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003 |
|
Crimson : |
И вообще, чтобы понять принцип работы компьютера, программист должен разработать микропроцессор. Чего уж мелочиться
|
A что, мы в универе разрабатывали!
|
|
|
TpuCTaH 63 EGP
Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006 |
|
Угу я я всего полгода назад простенький стековый компилятор писал
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Remint 385 EGP
Рейтинг канала: 3(31) Репутация: 84 Сообщения: 1785
Зарегистрирован: 12.05.2003 |
|
Crimson : |
Понимать принцип работы алгоритма однозначно полезно, но имхо лучше уж тогда залезть в существующую библиотеку и попытаться разобраться как там все устроено, чем свой вариант STL городить.
|
Угу, особенно когда работа в команде, наваяет такой "волк одиночка" своих велосипедов, зачастую просто потому, что не умеет стандартными библиотеками пользоваться, и в результате: отлавливание глюков по новой, задержки исполнения для всего проекта, а если этот товарищ потом еще и уйдет, или его "уйдут", проще будет его часть заново переписать, чем этот самостийный код ковырять.
Собственные велосипеды полезны только на раннем этапе, когда толком языка не знаешь, для закрепления материала. Или если этот велосипед решает задачу существенно лучше в конкретном случае, и это действительно необходимо для успеха проекта, дает конкурентные преимущества и т.д. причем с учетом дальнейшей поддержки, на которую уходит сил часто гораздо больше, нежели на изготовление первого релиза.
И кстати изучая исходники толковых библиотек (которые писали профессионалы самого высокого уровня), можно гораздо быстрее опыта поднабраться, и найти там множество полезных приемов программирования/проектирования, до которых самостоятельно пришлось бы доходить гораздо дольше.
_________________ Да пребудет с вами сила... |
|
|
Ur Quan 510 EGP
Рейтинг канала: 1(5) Репутация: 85 Сообщения: 728 Откуда: Северодвинск Зарегистрирован: 25.11.2003 |
|
Remint : |
И кстати изучая исходники толковых библиотек
|
угу, где бы исходники загрузки/записи JPG добыть?
Remint : |
Собственные велосипеды полезны только на раннем этапе, когда толком языка не знаешь, для закрепления материала.
|
по аналогии с транспортом, придумал кто-то этакий паровоз о 80 колёсах, а мне только труба от него нужна и не прямая как у него, а хитрогнутой формы. я опухну из кода этот кусок добывать и модифицировать. а если ещё это безобразие длл'кой на пару-тройку мегабайт... а исходники тока за денашку, нафик нужно.
Remint : |
И кстати изучая исходники толковых библиотек (которые писали профессионалы самого высокого уровня), можно гораздо быстрее опыта поднабраться
|
только если профессионалы комментировали почти каждую строчку, чего обычно не делают, особенно "высокого" уровня. а тупое копирование мозгов не добавит.
P.S.: Чужой код - потёмки. лучше пытаться иногда писать что-то своё, чтоб понимание пришло.
_________________ Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком. |
|
|
Digited 271 EGP
Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004 |
|
Ur Quan : |
где бы исходники загрузки/записи JPG добыть?
|
goto www.steps3d. народ .ru, их есть у Борескова в libTexture.
Цитата дня:
The practice of game programming : |
In order to obtain a drivers license in Washington State you must pass a written test and a drivers test.
In order to become a lawyer, you must pass the bar exam.
In order to become a licensed engineer, you must have a degree from an ABET-accredited university, pass your FE examine, gain on-the-job work experience, and then pass your PE exam.
In order to be a game developer, you have to ...? Mmm, what goes here? In order to be a game developer, do you just need to like making games? Like playing games? Have read some game programming books?
|
http://pkisensee.spaces.live.com/blog/cns!3C84486A9D832EB7!171.entry
Последний раз редактировалось: Digited (20:38 14-05-2007), всего редактировалось 1 раз |
|
|
Remint 385 EGP
Рейтинг канала: 3(31) Репутация: 84 Сообщения: 1785
Зарегистрирован: 12.05.2003 |
|
Ur Quan : |
а хитрогнутой формы. я опухну из кода этот кусок добывать и модифицировать.
|
В нормальной библиотеке, куски не нужно "добывать/модифицировать", их нужно наследовать, если нужно расширить функциональность. Речь о стандартных хорошо спроектированных средствах, а не о кривых поделках.
Если стандартного библиотечного решения нет, ес-но ты его пишешь сам (как правило та же STL способна в этом тебе помочь и ускорить процесс, + повысить надежность кода), это уже тавтология, которая подразумевается по умолчанию.
+ Читаем "Или если этот велосипед решает задачу существенно лучше в конкретном случае, и это действительно необходимо для успеха проекта"
Ur Quan : |
угу, где бы исходники загрузки/записи JPG добыть?
|
Если пишешь под винду, посмотри документацию MSDN на стандартный COM интерфейс IImage. Там в нем много полезного есть, я юзал для загрузки/блитования картинок в самых разных форматах в том числе и JPG (с использованием этого стандартного интерфеса решение получилось очиииинь компактным ), там есть и свой IImageEncoder, сам не юзал, не уверен, но возможно он тебе поможет.
ЗЫ Поиск рулит, глянь здесь, вроде решение описано с использованием этого самого интерфеса:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=702509&SiteID=1
ЗЫЗЫ
"Чужой код - потёмки. лучше пытаться иногда писать что-то своё, чтоб понимание пришло."
Если это код криворукого индуса, что-либо полезное действительно извлечь для себя трудно - можно гадать, зачем тут этот кусок, а он там просто ступил, и не знал, как это сделать короче/лучше/элегантней, там скорее плохому научишься. А вот если говорить о профессионально написанном библиотечном коде, то я с тобой категорически не согласен, там как раз все логично и красиво, если тяжело пока читать и понимать код самостоятельно, то полезно делать это с комментариями и детальным анализом составленными экспертами в книжном оформлении, или в электронном издании, того же Александреску, Скотт Мейерса, статьи на RSDN, CodeProject и пр. И конечно, сочетать все это с практикой. Когда-то думал примерно как ты, и мне самому было легче написать пусть и кривенькое, но свое (я и отметил, что на этом этапе это не вредно, главное на этом не останавливаться). Потом оказалось, что попросту не хватало опыта, научился читать, эффективно применять, понимать, ценить и извлекать полезное из чужого хорошо написанного и попросту красивого кода.
_________________ Да пребудет с вами сила...
Последний раз редактировалось: Remint (22:05 14-05-2007), всего редактировалось 1 раз |
|
|
TpuCTaH 63 EGP
Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006 |
|
Remint : |
их нужно наследовать,
|
ммм наследовать stl? имееться ввиду я надеюсь не
class MySuperVector : public std::vector<int>
{
...
}
???
ps Есть книги по boost и tr1 на руссоком?
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX
Последний раз редактировалось: TpuCTaH (23:52 14-05-2007), всего редактировалось 1 раз |
|
|
|
|
|
Канал Игры Мечты: «Злые беседы добрых программистов» |
|
|