Какой выбрать?
| |
AlexRabbit | Дата: Среда, 21 Августа 2013, 16:08 | Сообщение # 21 |
старожил
Сейчас нет на сайте
| Цитата (Dmi7ry) Думаю, преимущества всё же есть. Плюсов очень много. Если задача не предполагает оптимизацию низкоуровневых процессов С# - удобное и быстрое решение.
Цитата (Jania) Какой язык программирования стоит изучать начинающему программисту, просто хочу изучить программирования, а не знаю какой выбрать.
ПОИСК!!!! ПОИСК РУЛИТ!!!!!!!!
Сообщение отредактировал AlexRabbit - Среда, 21 Августа 2013, 16:09 |
|
| |
Dmi7ry | Дата: Среда, 21 Августа 2013, 16:20 | Сообщение # 22 |
почетный гость
Сейчас нет на сайте
| Цитата (Vinchensoo) Вместо делегатов есть интерфейсы, которые с точки зрения ООП, имхо, намного разумнее использовать. Совсем другая опера.
Цитата (Vinchensoo) Замыкания есть через анонимные классы Они реализуют замыкания только частично.
Цитата (Vinchensoo) условная компиляция тоже есть Поподробнее - каким образом? Через костыли?
Цитата (Vinchensoo) Асинхронная и динамическая компиляция давно реализована в java машине или я не понял, о чем вы? Нет, я про очень удобный async, введённый в пятой версии.
Цитата (Vinchensoo) Плюс надо не забывать, что дотнет- это винда, причем с покупкой кучи лицензий и т.д. Да, есть МОНО, некоторые даже используют его для серьезных проектов, но знакомые по опыту все равно плюются и говорят, что оно отличается мелочами, да и бесит. Также не нужно забывать, что винда (по информации от Net Applications, на июль 2013 года) - это 91,5% всех компьютеров. И я думаю, что ТС - не исключение.
Цитата (Vinchensoo) Мне очень понравилась невозможность ограничения размера памяти, выделенной приложению. Жрет, пока умная машина сама не решит подчистить мусор. Ограничить можно, например, через SetProcessWorkingSetSize. И подчищать мусор можно в разных режимах - можно и почаще, можно и пореже. А можно и чуть ли не ручками. Хотя мне, за более, чем 18 лет программирования, насколько помню, ни разу не требовалось искусственно ограничивать количество выделяемой приложению памяти (однако я не утверждаю, что это никому не нужно - просто мне не требовалось никогда).Добавлено (21.08.2013, 16:20) --------------------------------------------- Deswing, вы не учли - как первый язык программирования PHP категорично противопоказан. Если цель - создать быдлокодера, то самое оно, а если хорошего программиста, то нужно что-нибудь другого уровня.
|
|
| |
AlexRabbit | Дата: Среда, 21 Августа 2013, 16:27 | Сообщение # 23 |
старожил
Сейчас нет на сайте
| Цитата (Dmi7ry) Deswing, вы не учли - как первый язык программирования PHP категорично противопоказан. Если цель - создать быдлокодера, то самое оно, а если хорошего программиста, то нужно что-нибудь другого уровня.
Абсолютно.
Уже устал копипастить этот текст:
Что интересно, интернет полон статей о грамотном обучении (и последовательности обучения) языкам. Никто, ни один специалист не рекомендует начинать с объектно-ориентированных языков типа C++, Java и т.д. Даже те, кто дают первым языком C# подтверждают, что порог вхождения в него крайне высок, и требует понимания очень многих вещей (в частности, что такое и как работает .Net Framework, и с первых же строк кода - основы объектно ориентированного подхода). Да, писать то на нём потом человек будет (чаще как мартышка), но будет ли он понимать, и вызовет ли сие обучение понимание алгоритмов? Скорее всего нет.
Quote (shaman4d) Только я вот уже 9 лет жалею что не сделал именно так - вместо этого учил и испольщовал всякие JS Java PHP Basic ActionScript Delphi
И только это дало Вам в последствии возможность нормально подойти к языкам типа С++. Это нормальная практика.
Для "экспертов" С++ напомню, что все творения id-software до DOOM-3 были написаны на чистом С. Там не было С++. Почитайте интервью и книги про игрострой. Еще я им советую ознакомится с тем, как пишется их любимый Linux, и на каком языке пишется не только ядро (в версии Линуса Торвальдса), но и масса прикладных программ. Это тоже... Си, а не С++.
С++, преподанный человеку без подготовки порождает УЖАСНЫЕ алгоритмы и очень плохой стиль программирования. Попытка научить человека без базы С++ - это попытка дать технику нейрохирурга в руки человека, не умеющего накладывать бинт. Действительно, зачем ему бинты, он ведь хочет делать операции на мозге! Бинтует пусть медсестра!
Есть стандартный подход к обучению. Есть, между прочим прекрасная статья: "Как стать хакером" Эрик С. Рэймонд http://volgograd.lug.ru/library/hacker-howto.ru.html , которая обновляется с 1998 года. И почему то реальные эксперты в области ПО не видят ничего проблемного в обучении Basic, Pascal, Python. Почему то регулярно появляются новые версии "никому не нужного" бейсика. biggrin Ребята, Вы сами то в состоянии написать на Бейсике коммерческий продукт? Или Вы считаете, что круче уметь писать "Hello, World" на С++ - это делает Вас программистами?
Сейчас обучение значительно облегчено. Появились нормальные книги типа Петцольда "КОД", где полный новичек может узнать подноготную вычислительной техники и основы алгоритмики. Есть масса книг по QuickBasic 4.5 и Pascal. Почему до сих пор выпускаются книги по TurboPascal 7.0? Вам не приходило в голову, что это не мировой заговор?
Сначала изучаются обычные языки без всякого ООП: это Basic или Pascal. Лично я отдаю предпочтение Basic, но это сугубо вопрос личных предпочтений (как вопрос "что лучше - синий или зелёный"). Очень неплохо освоить оба: программист, знающий 1 или 2 языка - это несчастье а не программист. Потом желательно обучить человеку основам ассемблера. Да, вкратце, но он должен знать что это такое. И на базе всего этого разбирать с ним простейшие алгоритмы. Потом человеку можно дать Си.
(Альтернативный вариант предполагает Python-PHP-JavaScript-Java, но это не программистский вариант, а скорее курс рассчитанный для вебмастеров, которым сейчас не обойтись без программирования. Там не идет речь о сложной алгоритмике и скорее речь о программировании интерфейсов. Там такой подход простителен.)
И вот после того как человек научится обращаться с алгоритмами (с алгоритмами, а не выучит операторы!) ему можно дать ООП. Да, тут уже можно дать ему С++.
На счет споров С++ vs C# в последовательности обучения. Я лично обожаю С# и не притрагивался с С++ (за редкими исключениями) со времен Borland 3.1, но правда состоит в том, что программист должен уметь читать код на С++, так как большинство имеющегося сейчас кода написано на нём. Огромная часть литературы по геймдеву так же ссылается на алгоритмы С++. А научиться читать код не писав его - нереально. Кроме того, обратная пересадка (с С# на С++) редко происходит безболезненно. Есть много нюансов, из-за которых будто бы правильный код оказывается неработоспособен. Поэтому, при всей моей любви к C# я бы рекомендовал после Си выучить (неглубоко) С++, достаточно одного простого курса С++, а потом уже переходить к планомерному изучению С#. В этой ситуации необходимость иметь дело с С++ не вызовет проблемы.
Если человек чистый "прикладник" или нацелен на разработку игр на какой то конкретной платформе (Unity3D), то я понимаю желание выучить сразу С#. Тем более, что понятные и доступные книги для этого есть (Петцольд "программирование в тональности С#"или книга "HeadFirst C#").
Однако, как только человек столкнётся с чем либо сложнее программирования "Сапёра" и "Арканоида", он убедится, что решение нетривиальных задач лежит не в области знания операторов С#, а в области алгоритмизации, и вот тут начнется свистопляска.
Поэтому если мы говорим об обучении программированию (а не о том, чтобы геймдизайнер подучился скриптингу) то вышеописанная последовательность - единственная, после которой можно рассчитывать на получение вменяемого специалиста.
В зависимости от конкретной ситуации могут быть отступления. Некоторые параллельно с Си могут изучать разработку баз данных (Access, FoxPro и т.д.), веб ориентированные программисты могут осваивать Ruby или что-либо ещё. Тот же С# нужен далеко не всем, и мы о нем говорим так как речь идет о гейм-деве. Не надо забывать и о том, что есть еще и программирование под MacOS. Но это уже детали. Повторюсь: программист должен знать и уметь пользоваться разными языками. Потому что разные языки это не тоьлко набор операторов или подключаемых библиотек - это разный СТИЛЬ решения задачи. И для С, С++, SmallTalk и FORTRAN он будет разным.
Сообщение отредактировал AlexRabbit - Среда, 21 Августа 2013, 16:28 |
|
| |
Vinchensoo | Дата: Среда, 21 Августа 2013, 16:44 | Сообщение # 24 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (Dmi7ry) Совсем другая опера. Код package javaapplication3;
interface SomethingLikeDelegat { public double doIt(); }
class Default implements SomethingLikeDelegat { @Override public double doIt() { // какие-то инструкции return 10; } }
public class JavaApp { //переменная, которая будет ссылаться на экхемпляры различных наследников (с разными реализациями метода doIt()) public static SomethingLikeDelegat l = new Default();
public static void main(String[] args) { // какие-то действия, которые могут поменять значение l l.doIt(); // снова они l = new SomethingLikeDelegat() { @Override public double doIt() { return System.currentTimeMillis() % 1000; } }; System.out.println( l.doIt()); } } Цитата (Dmi7ry) Поподробнее - каким образом? Через костыли? тык Цитата (Dmi7ry) Нет, я про очень удобный async, введённый в пятой версии. Понятно, с этим дела не имел, так что ничего не скажу. Цитата (Dmi7ry) Также не нужно забывать, что винда (по информации от Net Applications, на июль 2013 года) - это 91,5% всех компьютеров. И я думаю, что ТС - не исключение. ТС-то мб и не исключение, но для кого он пишет? Когда сравнивают java и c#, речь идет о серверах онли, потому что писать GUI или, о боги, игры на java не совсем разумно(исключение ведроид). А вот на серверах, по-прежнему, рулит и педалит линукс. Хотя сейчас все чаще говорят, что линукс уже и на серверах никому не нужен, но маленькой команде достаточно накладно поднимать сервер на виндоус, ибо лицензии.
Цитата (Dmi7ry) Ограничить можно, например, через SetProcessWorkingSetSize. И подчищать мусор можно в разных режимах - можно и почаще, можно и пореже. А можно и чуть ли не ручками. Хотя мне, за более, чем 18 лет программирования, насколько помню, ни разу не требовалось искусственно ограничивать количество выделяемой приложению памяти (однако я не утверждаю, что это никому не нужно - просто мне не требовалось никогда). Это костыль и не рекомендовано. В java делается простым ключом компиляции. Удобно, когда на 1 машине стоит несколько серверов. Меня, например, очень удивила простенькая GUI программа на шарпе, сжирающая 600 метров оперативки(после срабатывания GC жрет всего метров 14, мб меньше). Причем подчищает он тогда, когда память забивается почти полностью. Вроде бы и неудобств особо нет, но вот полностью загруженная память от маленького скринсейвера- это огонь.
|
|
| |
Izaron | Дата: Среда, 21 Августа 2013, 16:50 | Сообщение # 25 |
Rammstein forever
Сейчас нет на сайте
| Хм, помню, какой ужас творился в моей голове, когда после ГМЛ открыл учебник по C#.
Лично у меня программерский путь такой:
Паскаль -> GML -> C# (до уровня Hello, world!) -> C++ -> C# (как скриптование к Unity3D) -> C++, на котором я до сих пор программирую. Шарп нравится мне чуточку лучше, чем С++, своим стилем кода, например, И так: Код enum Gun { Pistol, AK47 };
Class::Do(Pistol); // C++ Код enum Gun { Pistol, AK47 }
Class.Do(Gun.Pistol); // C#
На шарпе не пишут серьезные игры или движки, т.к. Managed DirectX мертв, а остальные фреймворки/врапперы малоизвестны
|
|
| |
Dmi7ry | Дата: Среда, 21 Августа 2013, 19:51 | Сообщение # 26 |
почетный гость
Сейчас нет на сайте
| Izaron, при чём тут вообще Managed DirectX? Он устарел ещё с приходом XNA. Если хочется писать под DirectX, то можно взять SharpDX. Добавлено (21.08.2013, 19:51) ---------------------------------------------
Цитата (Vinchensoo) Код package javaapplication3; ...
сравните это с Код delegate void MyDelegate(); class Program { static void Main(string[] args) { //создание экземпляра делегата с передачей имени метода MyDelegate myDelegate = new MyDelegate(MyMethod); //вызов метода делегата myDelegate(); } static void MyMethod() { Console.WriteLine("Делегированный метод выполняется"); Console.ReadKey(); } } //вызов метода делегата из main-класса string result = myDelegate(5);
Цитата (Vinchensoo) ТС-то мб и не исключение, но для кого он пишет? Когда сравнивают java и c#, речь идет о серверах онли, потому что писать GUI или, о боги, игры на java не совсем разумно(исключение ведроид). А вот на серверах, по-прежнему, рулит и педалит линукс. Начинающий программер будет сразу писать что-то для серверов? Сомнительно. Весьма сомнительно.
Цитата (Vinchensoo) Это костыль и не рекомендовано. Не рекомендовано, однако нормально написанному приложению это и не потребуется.
|
|
| |
NancyWithoutSid | Дата: Среда, 21 Августа 2013, 19:53 | Сообщение # 27 |
был не раз
Сейчас нет на сайте
| Цитата (AlexRabbit) Сначала изучаются обычные языки без всякого ООП: это Basic или Pascal. Лично я отдаю предпочтение Basic, но это сугубо вопрос личных предпочтений (как вопрос "что лучше - синий или зелёный"). Очень неплохо освоить оба: программист, знающий 1 или 2 языка - это несчастье а не программист. Потом желательно обучить человеку основам ассемблера. Да, вкратце, но он должен знать что это такое. И на базе всего этого разбирать с ним простейшие алгоритмы. Потом человеку можно дать Си. Вы шутите? Ассемблер после бейсика это полный абзац. После того как с вами сюсюкают по поводу ввода с клавиатуры, спустится до машинных команд. Что вы в современной ОС напишите на ASM? Да ничего, прерывания в винде выпилили(в лине можно да, int 80h пока живо). Поэтому даже для простого ввода-вывода вы будете использоваться winAPI. После basic это реально? А как насчет стека, передачи параметров в процедуры? Да банально после бейсика "суметь" запустить линковщик отдельно от ассемблера, это уже заслуга. Да даже просто "осознать" регистры и команды типа lea, dword ptr и так далее, уже непосильная задача для basic программиста. После этого он скорее будет писать на PHP, при чем в том же стиле. Цитата (AlexRabbit) Ребята, Вы сами то в состоянии написать на Бейсике коммерческий продукт? Или Вы считаете, что круче уметь писать "Hello, World" на С++ - это делает Вас программистами? Опять же. О чем вы? Какие коммерческие продукты на basic? Да проще на березе повеситься. Даже если это будет васик, то это будут чистые вызовы .Net framework. Это уже некрофилия реально, как и паскалец.
Начинать надо с Си(если вам не 12 лет). А если вы еще не адекватны в силу возраста, то берите пейтон, или JS + HTML. Ассемблер ТОЛЬКО после си. При чем по началу inline, чтобы совсем не было травмы мозга. Цитата (AlexRabbit) (Альтернативный вариант предполагает Python-PHP-JavaScript-Java, но это не программистский вариант, а скорее курс рассчитанный для вебмастеров, которым сейчас не обойтись без программирования. Там не идет речь о сложной алгоритмике и скорее речь о программировании интерфейсов. Там такой подход простителен.) Какие "сложные" алгоритмы вы имеете в виду, которые есть на C/C++/C# , которых нет на Java/Python? Открою для вас страшную тайну, но основная задача программиста сегодня, это быстро осваивать инструмент. То бишь очередную новую библиотеку/фреймворк. Ваши мега алгоритмы никому не нужны. Ибо уже давно все написано,надо лишь знать где взять. И у вас ровно 3 варианта
1)Делать продукт быстро и качественно и использованием стороннего софта. В данном случае важно, открыт ли код к библиотекам(как там дела с .net?). Уже давно есть байнды в Java/Python вагона сишных либ с мега алгоритмами. 2)Писать свой говнокод. А потом бегать и "подтирать" утечки памяти, вдруг забытые файловые дескрипторы, вдруг ловить сегфолты, вдруг бороться с многопоточностью и так далее. 3)Писать свой инструмент. Свою библиотеку, решающую ограниченую задачу качественно. Но это уже совсем другой уровень. Тут можно и Кнута с полки достать.
Сегодня it сфера очень скоротечна. И нужно быть на коне, умея писать на многих языках, и умея освоить за неделю новую технологию. Писать нужно на всем подряд, и все подряд. Сначала будет криво косо(это неизбежно), но со временем все придет в норму. Главное хотеть писать хороший код.
Цитата (Dmi7ry) условная компиляция тоже есть Поподробнее - каким образом? Через костыли?
#ifdef #define нужны в кроссплатформеном языке? Остальное решается в рантайме через сборщик(maven/ant) либо переменные окружения/настройки сервера приложений. Цитата (Dmi7ry) Нет, я про очень удобный async, введённый в пятой версии.
Ну самим не смешно? 10 строчек что на Java что на C#. Это в стиле "скрытых" геттеров и сеттеров, которые безусловно дают очень большое приемущество. Цитата (Dmi7ry) Также не нужно забывать, что винда (по информации от Net Applications, на июль 2013 года) - это 91,5% всех компьютеров. И я думаю, что ТС - не исключение. Кому-то сегодня нужны десктопные приложения? Цитата (Dmi7ry) Ограничить можно, например, через SetProcessWorkingSetSize. И подчищать мусор можно в разных режимах - можно и почаще, можно и пореже. А можно и чуть ли не ручками. Ну это разве не костыль? Я понимаю что сегодня виртуалка на одно серверное приложение это нормально, а под вендой хомячки переживут 600 мегов утечки от маленького winform приложения, ибо у них ничего больше и не запущено, но все-таки как-то
Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
|
|
| |
Izaron | Дата: Среда, 21 Августа 2013, 20:00 | Сообщение # 28 |
Rammstein forever
Сейчас нет на сайте
| Цитата (Dmi7ry) Izaron, при чём тут вообще Managed DirectX? Он устарел ещё с приходом XNA. Если хочется писать под DirectX, то можно взять SharpDX. Все равно как-то не айс брать полудохлые врапперы, можно хотя бы создать DLL со своими функциями и использовать двигло на С# через DLL написанные на С++, но это еще больше не айс, лучше тогда уж чисто под крестами писать
|
|
| |
NancyWithoutSid | Дата: Среда, 21 Августа 2013, 20:04 | Сообщение # 29 |
был не раз
Сейчас нет на сайте
| Цитата (Deswing) "В области программирования для сети Интернет PHP — один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP. Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений[8]. Основные из них: автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы; взаимодействие с большим количеством различных систем управления базами данных (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO); автоматизированная отправка HTTP-заголовков; работа с HTTP-авторизацией; работа с cookies и сессиями; работа с локальными и удалёнными файлами, сокетами; обработка файлов, загружаемых на сервер; работа с XForms. В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемся на данных поисковых систем, в июне 2013 года PHP находился на 5 месте среди языков программирования.[6] К крупнейшим сайтам, использующим PHP, относятся Facebook, Wikipedia и др." Либо пост 2001 года, либо я НЕ ДОГОНЯТЬ ЭТОТ ПОЕЗД
Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
|
|
| |
Vinchensoo | Дата: Среда, 21 Августа 2013, 20:09 | Сообщение # 30 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (Dmi7ry) сравните это с И что? В чем принципиальное отличие, кроме сахара? Передавайте интерфейс как параметр, если нужно что-то передать и вызывайте его внутри. Это чистой воды синтаксический сахар, причем не особо нужный. Цитата (Dmi7ry) Начинающий программер будет сразу писать что-то для серверов? Сомнительно. Весьма сомнительно. Начинающий программер будет писать что-то серьезное для десктопа?) У нас тут полно детей, которые пилят онлайн-игры на конструкторах\ php. Некоторые даже дошли до стадии рабочей демки. Почему бы и нет. Цитата (Dmi7ry) Не рекомендовано, однако нормально написанному приложению это и не потребуется. Я вам привел один пример, чем он "не нормален"? Сборщик мусора просто не затирает скриншоты, которые делает программа до тех пор, пока память не забьется хотя бы на 70%. И потом резко вытирает 500-600 метров и оставляет 15. Это нормально?)
|
|
| |
Dmi7ry | Дата: Среда, 21 Августа 2013, 22:12 | Сообщение # 31 |
почетный гость
Сейчас нет на сайте
| Цитата (Vinchensoo) И что? В чем принципиальное отличие, кроме сахара? Передавайте интерфейс как параметр, если нужно что-то передать и вызывайте его внутри. Это чистой воды синтаксический сахар, причем не особо нужный. Во-первых, сахар уменьшает количество кода, который нужно писать. Во-вторых, улучшает читаемость кода за счёт уменьшения объёма. В-третьих, если есть желание разобраться, просто погуглите, как используются делегаты в Шарпе.
Цитата (Vinchensoo) Начинающий программер будет писать что-то серьезное для десктопа?) сначала что-то простое и со временем у него, при необходимости, будет возможность, не меня среду, использовать все доступные возможности.
Цитата (Vinchensoo) Я вам привел один пример, чем он "не нормален"? Сборщик мусора просто не затирает скриншоты, которые делает программа до тех пор, пока память не забьется хотя бы на 70%. И потом резко вытирает 500-600 метров и оставляет 15. Это нормально?) Если бы там был включен второй уровень сборки, то скриншоты затирались бы сразу же. У меня в движке игры при удалении спрайтов и других изображений память освобождается почти моментально.Добавлено (21.08.2013, 22:12) ---------------------------------------------
Цитата (NancyWithoutSid) #ifdef #define нужны в кроссплатформеном языке? Конечно. Естественно, что при использовании систем сборок они возьмут на себя бОльшую часть работы, но используются они далеко не всегда. Иногда гораздо проще воткнуть #define.
Цитата (NancyWithoutSid) Ну самим не смешно? 10 строчек что на Java что на C#. Это в стиле "скрытых" геттеров и сеттеров, которые безусловно дают очень большое приемущество. 10 тут, 10 там, 10 ещё где-то. А в сумме всё равно время экономится и усилия. Многие вещи в эволюции программирования - это что-то, что позволяет делать то же самое, что уже было, только проще.
Цитата (NancyWithoutSid) Кому-то сегодня нужны десктопные приложения? примерно полутора миллиардам владельцам ПК - несомненно.
Цитата (NancyWithoutSid) Ну это разве не костыль? повторюсь: в нормально написанном приложении это и не требуется.
|
|
| |
NancyWithoutSid | Дата: Среда, 21 Августа 2013, 22:30 | Сообщение # 32 |
был не раз
Сейчас нет на сайте
| Цитата (Dmi7ry) Если бы там был включен второй уровень сборки, то скриншоты затирались бы сразу же. У меня в движке игры при удалении спрайтов и других изображений память освобождается почти моментально. А не заставит ли это GC совершать целую кучу минорных сборок, тормозя ваше приложение?
Цитата (Dmi7ry) Конечно. Естественно, что при использовании систем сборок они возьмут на себя бОльшую часть работы, но используются они далеко не всегда. Иногда гораздо проще воткнуть #define. Любой мало мальский проект на Java это maven или ant, где все это есть. Обычно все настраивается через xml. Если вам серьезно надо коцать код в зависимости от ситуации, то byte code instrumentation в руки (javssist/ cglib). За 3 года ни разу в java коде не понадобился #define или #ifdef, я что-то делаю не так Цитата (Dmi7ry) 10 тут, 10 там, 10 ещё где-то. А в сумме всё равно время экономится и усилия. Многие вещи в эволюции программирования - это что-то, что позволяет делать то же самое, что уже было, только проще. рационально, тут не поспоришь. Но это делает 2 злые вещи 1)программистов тупыми, глядишь и слово Thread забудут 2)Опять же дает стрелять в ногу, и загораживает "понимание процесса" Цитата (Dmi7ry) примерно полутора миллиардам владельцам ПК - несомненно. А что им нужно? Калькулятор/видео плеер, и ms office. The end? Сейчас все переезжает в веб и на мобилки, и этот процесс необратим. Корпоративный софт тоже на вебе. Наверное и так очевидно почему.Добавлено (21.08.2013, 22:30) ---------------------------------------------
Код ну если сильно хочется public class CompileConfig{ public static final boolean useThat = true; } public class MyDefine{ public void foo(){ if(useThat){} else {} } } ветки else в байт коде не будет. Принципиальной разницы не вижу. Разве что #ifdef более ванилен и сишен.
Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
|
|
| |
Dmi7ry | Дата: Четверг, 22 Августа 2013, 00:28 | Сообщение # 33 |
почетный гость
Сейчас нет на сайте
| Цитата (NancyWithoutSid) Опять же. О чем вы? Какие коммерческие продукты на basic? Да проще на березе повеситься. Даже если это будет васик, то это будут чистые вызовы .Net framework. Это уже некрофилия реально, как и паскалец. Начинать надо с Си(если вам не 12 лет). А если вы еще не адекватны в силу возраста, то берите пейтон, или JS + HTML. Ассемблер ТОЛЬКО после си. При чем по началу inline, чтобы совсем не было травмы мозга. Во многом также не согласен с тем постом - если будет время, то откомментирую его. Во многом понимаю ваши ответы автору поста. Однако с этим не соглашусь, ибо это противоречит моему собственному опыту. С вашего позволения, немного расскажу о нём. Я начинал с Бэйсика. Не помню, сколько времени я на нём писал - это было примерно 24 года назад. Помню, что в итоге даже делал какие-то простенькие игрушки на нём. Может несколько месяцев. После я сразу перешел на Ассемблер, на котором постоянно писал больше 7 лет (дальше - не регулярно). После Бэйсика. И перед Си. Сначала под зилоговские процессоры, а после под мотороловские 680x0. Не было никаких проблем понять регистры, прерывания, сдвиги и всё остальное. Забавно, но документации тогда почти никакой не было. Про интернет тогда никто и не слыхал (даже простых модемов ни у кого не было)(речь о простых смертных), поэтому рассчитывать можно было только на книги/журналы. Приходилось учиться по книжке с описанием процессора, ковыряя и изучая чужие программы. Уже несколько позже я познакомился с такими же маньяками как я, стал демосценером - тогда стало гораздо проще и с информацией, и с литературой, и с программами. Следующим моим языком был Си. Вследствие того, что Си является всего лишь транслятором команд в машинный код, учить его было довольно просто. После - конечно же, C++. Его я изучал, работая в гос конторе и разрабатывая систему управления предприятием. Дальше мне приходилось писать на различных языках, включая некоторые экзотические: E, Rexx, Perl, D, PureBasic, Паскаль, JavaScript, PHP, Python, Java и множество других. Я как-то подсчитывал для интереса, вспомнил около 20 штук. Какие-то захватывал поверхностно - только для решения необходимых задач, а в какие-то приходилось погружаться. В последнее время пишу на GML, C# и Lua (преимущественно по работе - я занимаюсь разработкой игр). Собственно, к чему я это пишу: никогда у меня не возникало проблем с пониманием нового языка. Была небольшая заминка, когда начал изучать C++ (литературы не было, не сразу понял идею ООП, однако более опытные коллеги помогли разобраться). Не было проблем с восприятием новых языков. Смена парадигмы - думаю, она может на какое-то время ввести в ступор (например, при переходе ООП->ФП), но тут уж ничего не поделать - разбираться и пробовать. Естественно, что за эти годы немало людей обращались ко мне за помощью и я видел немало людей, которые стали программистами. И анализируя этот опыт, утверждаю - с Си начинать не нужно. Я рекомендую C# или Python. Естественно, параллельно изучать различные алгоритмы, логику построения программ и т.п. А дальше уже - к чему душа ляжет. Веб, системное программирование, геймдев и т.д. - в зависимости от предпочтений, выбирать технологии в нише и изучать. Тут уже может быть и Си, и C++, и PHP (кстати, из всех языков, с которыми мне приходилось работать, как раз он был самым мозговыносящим) и Ruby и функциональные языки и всё, что угодно. Считаю ли я, что нужно изучать Ассемблер сейчас? Нет, не считаю. Ассемблер нужен в весьма специфических случаях. За последние лет пять мне на нём пришлось что-то делать только один раз (и то, для знакомого, который обратился за помощью). Нужно ли понимать структуру процессора? Да. Не обязательно даже подробно углубляться в это. Но это знание помогает довольно часто (опять же, это с высоты своего опыта - вряд ли это понадобится человеку, который всю жизнь будет на PHP сайты писать). Нужно ли учить С и С++? Желательно. Как правильно было указано в том посте, большинство кода написано на си и с++ и быть способным понимать его - весьма большой плюс. Однако при этом, если нравится какой-то более-менее известный (и при этом, актуальный) стек/технологии (или кому-то просто не даётся, например, c++), всегда можно попробовать обосноваться в них, не переключаясь на то, чем заниматься не хочется. Например, если глянуть списки популярных вакансий, можно легко найти работу с хорошей з/п, занимаясь разработкой исключительно на шарпе. Найти работу разработчика ruby несколько сложнее, но и это возможно. Delphi (к вопросу о целесообразности его изучения) - почти невозможно (хотя иногда встречаются и по нему вакансии). Python, Java, PHP - без проблем. Устраиваемся работать и совершенствуемся. Параллельно можно как хобби изучать что-нибудь ещё.Добавлено (22.08.2013, 00:28) ---------------------------------------------
Цитата (NancyWithoutSid) А не заставит ли это GC совершать целую кучу минорных сборок, тормозя ваше приложение? Нет, там всё контролировалось. Специально проверял нагрузками - создавал тысячи спрайтов и удалял их в разных вариантах (пачками, по одному, с разными промежутками времени и т.п), с производительностью проблем никаких не было.
Цитата (NancyWithoutSid) #define или #ifdef, я что-то делаю не так возможно, что я просто так привык писать на си-подобных языках. и, скорее всего, у нас разные задачи.
Цитата (NancyWithoutSid) 2)Опять же дает стрелять в ногу, и загораживает "понимание процесса" В ногу даёт выстрелить, например, прямое управление памятью в плюсах. А Ассемблер - вообще катастрофа Я даже занимался прямым программированием дискового контроллера - представляете, какие возможности "выстрелить"? Зачастую, чем больше абстракций, тем больше защиты от дурака.
Цитата (NancyWithoutSid) А что им нужно? Калькулятор/видео плеер, и ms office. The end? Сейчас все переезжает в веб и на мобилки, и этот процесс необратим. Корпоративный софт тоже на вебе. Наверное и так очевидно почему. спорно, весьма спорно. всё не переедет в любом случае, и на это есть множество причин. начиная от некачественного интернета и кончая самими ограничениями данного подхода. впрочем, откажусь от спора - моё время весьма ограниченно.
Цитата (NancyWithoutSid) ветки else в байт коде не будет. Принципиальной разницы не вижу. Разве что #ifdef более ванилен и сишен. Я видел этот код. Но его очевидность, на мой взгляд, весьма низка. Он не выглядит как управляющая конструкция, он выглядит именно как код - с такой записью работать тяжелее. При записи же #define всё сразу хорошо видно.
|
|
| |
Vinchensoo | Дата: Четверг, 22 Августа 2013, 06:55 | Сообщение # 34 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (Dmi7ry) Во-первых, сахар уменьшает количество кода, который нужно писать. Во-вторых, улучшает читаемость кода за счёт уменьшения объёма. В-третьих, если есть желание разобраться, просто погуглите, как используются делегаты в Шарпе. Ну вот, прочитал: тык. Я понимаю, зачем они нужны, в flash есть похожий механизм для передачи функции как параметра.
У java есть класс Method к рефлекшн API, только им редко пользуются, если я понимаю. Цитата (Dmi7ry) Если бы там был включен второй уровень сборки, то скриншоты затирались бы сразу же. У меня в движке игры при удалении спрайтов и других изображений память освобождается почти моментально. Мб, но это далеко не единственное Ылитное решение от МК. И это свойственно всем их продуктам, к сожалению.
|
|
| |
Game_maker_8 | Дата: Четверг, 22 Августа 2013, 09:49 | Сообщение # 35 |
постоянный участник
Сейчас нет на сайте
| GML
Я на столько стар ,что участвовал в 1 гамироне :'(
|
|
| |
PBPROG | Дата: Четверг, 22 Августа 2013, 10:14 | Сообщение # 36 |
постоянный участник
Сейчас нет на сайте
| Цитата (Jania) Какой язык программирования стоит изучать начинающему программисту, просто хочу изучить программирования Начни с простого и современного языка, например, с PureBasic. Не слушай других советчиков, ведь они предлагают то, что вовсе не подходит для начинающих. Им бы только похоливарить!
|
|
| |
Archido | Дата: Четверг, 22 Августа 2013, 11:02 | Сообщение # 37 |
Сэнсэй
Сейчас нет на сайте
| Цитата (NancyWithoutSid) Опять же. О чем вы? Какие коммерческие продукты на basic? Да проще на березе повеситься. Тут скорее говорится об этом образно, это не призыв к действию. Лучше уметь что-то толковое писать на бейсике, чем крутить мессадж бокс в цикле и кричать, что да, "я знаю С++"
Цитата (NancyWithoutSid) Даже если это будет васик, то это будут чистые вызовы .Net framework Другие диалекты бейсика? Не, не слышал.
Цитата (NancyWithoutSid) Открою для вас страшную тайну, но основная задача программиста сегодня, это быстро осваивать инструмент. То бишь очередную новую библиотеку/фреймворк. Ваши мега алгоритмы никому не нужны. Это у вас такая основная задача? Быстро осваивать очередную библиотеку? И ваши мега алгоритмы никому не нужны? Ок, пусть тогда это и останется вашей тайной =)
Цитата (NancyWithoutSid) Ибо уже давно все написано,надо лишь знать где взять. Это вы о ком сейчас говорите? Если надо будет систему рендера написать, где брать будете?
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
NancyWithoutSid | Дата: Четверг, 22 Августа 2013, 13:29 | Сообщение # 38 |
был не раз
Сейчас нет на сайте
| Цитата (Archido) Это вы о ком сейчас говорите? Если надо будет систему рендера написать, где брать будете? Не поняла вопроса. Что вам рендерить надо? Или это "очередная абстрактная никому не нужная система, определенно своя и самая крутая" Batch операции над изоображениями? ImageMagic/gimp. Повертеть на сцене что-то? Blender и куча других движков, в том числе 2D. Рендерить что-то в вебе - html/css/js - хоть png/jpg/pdf. Возможно web-kit если вам надо без x-server. Вы правда считаете что ничего нет? Мне вас жаль. Цитата (Archido) Это у вас такая основная задача? Быстро осваивать очередную библиотеку? И ваши мега алгоритмы никому не нужны? Ок, пусть тогда это и останется вашей тайной =) Сегодня один проект - завтра другой. Сегодня одни задачи и интструменты - завтра другие. Если будете тормозить и пытаться решать новые задачи "старыми уютными" способами, которые абсолютно не подходят, то вы никому не нужны как нормальный программист. Будете годами сидеть 40 часовую неделю перед монитором в качестве input девайса у менеджера и архитектора.
Цитата (Archido) Другие диалекты бейсика? Не, не слышал. Дорогой, расскажи мне диалект, кроме VB где можно рисовать окошечки под вендой, а еще желательно berkley sockets Без этого, я считаю нереально писать современные программы.Добавлено (22.08.2013, 13:29) ---------------------------------------------
Цитата (PBPROG) Начни с простого и современного языка, например, с PureBasic. Не слушай других советчиков, ведь они предлагают то, что вовсе не подходит для начинающих. Им бы только похоливарить! Зачем он нужен? Хочется играться, возьмите JS. Хочется консоль и все по-взрослому - берите nodejs. Порисовать ui - учите css3 html5. Это реально ПОЛЕЗНЫЕ навыки, которые в определенный момент вам окупятся 1000 кратно.
Цитата (Dmi7ry) возможно, что я просто так привык писать на си-подобных языках. и, скорее всего, у нас разные задачи. На Си использую команды препроцессора в хвост и гриву, там без них абсолютно никак, если нужно собрать что-то более менее годное/переносимое и настраиваемое при компиляции. На Java как-то не знаю Реально нет нужды. Скорее всего именно поэтому в стандарте до сих пор их нет и не предвидется. Больше не хватает в Java unsigned типов данных. Я только один раз пыталась писать "низкоуровневый" код на java, с тех пор я этого не делаю вообще, а сразу беру C. Цитата (Dmi7ry) Была небольшая заминка, когда начал изучать C++ (литературы не было, не сразу понял идею ООП, однако более опытные коллеги помогли разобраться).
честно говоря в С++ ООП не вызывает каких-то проблем особых. Мои любимые грабли это ссылки vs указатели vs по значению / темплейты / stl - убийственная и зубодробильная вещь. boost даже не трогала. RTTI мать его. Всякие веселухи типа protected наследования. До С++11 еще даже не добралась, а там уже closure/ forEach/ list initializers.В общем, я настроена осилить все это, но не сейчас Цитата (Dmi7ry) Я видел этот код. Но его очевидность, на мой взгляд, весьма низка. Он не выглядит как управляющая конструкция, он выглядит именно как код - с такой записью работать тяжелее. При записи же #define всё сразу хорошо видно. Не буду спорить, тут вы правы на все 100%. Но лично мне такого добра писать не доводилось
С вами приятно спорить Истина где-то рядом - пора завязывать. В целом мне остается только выразить респект, и пожелать удачи в разработке игр *beer*
Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
|
|
| |
PBPROG | Дата: Четверг, 22 Августа 2013, 13:32 | Сообщение # 39 |
постоянный участник
Сейчас нет на сайте
| Цитата (NancyWithoutSid) Дорогой, расскажи мне диалект, кроме VB где можно рисовать окошечки под вендой Выше упоминал про PureBasic. Вот он дружит с окошечками не только под виндой, но и линукс и макос. И к тому же не нуждается в .NET Framework.Добавлено (22.08.2013, 13:32) ---------------------------------------------
Цитата (NancyWithoutSid) Зачем он нужен? Вы ТС этой темы? Или вы тут только похоливарить?
|
|
| |
черная_тень | Дата: Четверг, 22 Августа 2013, 13:36 | Сообщение # 40 |
Flash-любитель
Сейчас нет на сайте
| Я пока листал эту страницу - состарился. Господа, автор оказался просто троллем и его уже забанили.
I am back, boyz
|
|
| |
|