Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.06.2013, 23:46
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

Среда разработки С++
Вот так вот, решил ознакомиться с сим языком и дилемма.
Пока нужна возможность только писанины чистого си, пока даже консольного, но с гуи билдером желательно каким-то. Основные требования - няшность и удобный отладчик.
Пробовал визуал студию - норм, но все равно что-то не то.
Коде::блок - лучше, но как-то душа не лежит. И в отладчике почему-то не останавливается на брейкпоинтах.
Кюти билдер - выглядит оче ок, но я пока не понимаю зачем. А еще его хрен настроишь, еле прикрутил к нему компилятор, но отладчик все равно не работает.

Пока хочу добить кютибилдер. Но надо ли он мне? Там вообще можно на С++ ванильном писать и билдить его, чтоб на других пеко запустилось?
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2013, 00:26
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

Хм. Только донастраивал кюти билдер, неплохо.
Правда почему там пустые переменые и мыссивы в отладчике показываются со случайными значениями?
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2013, 02:07
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от PashPP
Пробовал визуал студию - норм, но все равно что-то не то.
Что не то?

Сообщение от PashPP
Пока хочу добить кютибилдер. Но надо ли он мне?
Если требуется писать кроссплатформенные GUI, то есть смысл рассмотреть Qt.
Если только под win, то VS + WPF, под Mac Xcode или AppCode.

Но вплане изучения языка не советую забивать Qt голову.

Да кстати почему С, а не С++?

Сейчас я использую AppCode, лучше пока не встречал.
Хотя в основном приходится писать код в консольном vim'e )

Сообщение от PashPP
Правда почему там пустые переменые и мыссивы в отладчике показываются со случайными значениями?
Размер занимаемой памяти для конкретной архитектуры


PS: начни с vim + g++/clang++ + make + книги (Страуструп, Мейерс, Элджер, Седжвик, Дьюхерст)

Последний раз редактировалось monolithed, 03.06.2013 в 14:43.
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2013, 13:55
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Дзен-трансгуманист
В текущих может оставаться мусор
К примеру, если я напишу:
const foo *i = &bar;

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

Поэтому я предположил что скорее всего имеется ввиду размер занимаемой памяти для конкретной архитектуры:

const std::size_t size = std::sizeof(foo);

Последний раз редактировалось monolithed, 04.06.2013 в 13:58.
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2013, 04:11
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Может немного не в тему, но есть такие штуки, как компиляторы онлайн. Софтину серьёзную ненапишеш, но поиграться в целях обучения очень даже прикольно.

programr

Куча демок которые можно запускать и редактировать, куча языков и платформ. Демки разбиты по темам, проилюстрированы все основные возможности языка.

главная
http://www.programr.com/
С++
http://www.programr.com/zone/cpp
<iframe src='http://www.programr.com/embed.php?action=tf&path=demostudent//view/temp_1370396448/Example.cpp' width='100%' height='700' frameborder='0'></iframe>


Что понравилось,на ресурсе дак это то что есть возможность мучить пробные приложения для IOS и Android, и что самое главное запускать.
сначало compile потом run (вдруг первый раз компилятор кто увидел )
<iframe src='http://www.programr.com/embed.php?action=tf&path=demostudent/view/temp_1370397379/Example_1363180033291' width='100%' height='700' frameborder='0'></iframe>


www.compileonline.com
А вот здесь больше языков, но без демок. Зато можно пощупать всякую экзотику и ископаемых типо Ada или Algol-68
Сайт
http://www.compileonline.com/
ссылка на С++
http://www.compileonline.com/compile_cpp_online.php
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 05.06.2013 в 06:33. Причина: не напишешь
Ответить с цитированием
  #6 (permalink)  
Старый 05.06.2013, 12:32
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от DjDiablo
Софтину серьёзную ненапишеш, но поиграться в целях обучения очень даже прикольно.
Для изучения этого языка абсолютно бесполезные вещи.
Основное назначение таких сервисов как liveworkspace.org, codepad.org это дать возможность быстро проверить ту или иную особенность языка или просто создать демонстрационный пример для кого-то другого.
Ответить с цитированием
  #7 (permalink)  
Старый 05.06.2013, 13:43
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Цитата:
возможность быстро проверить ту или иную особенность языка
Это тоже часть обучения

Но вообще не знаю, я не по ним учился
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #8 (permalink)  
Старый 05.06.2013, 14:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от DjDiablo
Это тоже часть обучения
К сожалению процесс изучения С++ не поддается никакой логике, тут либо у тебя есть лет 5-10 на запоминание особенностей языка либо нет
Ответить с цитированием
  #9 (permalink)  
Старый 06.06.2013, 03:03
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

ну ты перегнул насчёт пяти лет помоему.
Что касается основных конструкций то их можно ну скажем за неделю выучить.

Потом месяцами будешь забывать, путаться, заглядывать в справочник. Но это пройдёт, и спустя какое то время можно начать писать вполне уверенно.

Неплохо решать типовые задачи, тогда станет ясно где и что уместно применять.

Для продакшн конечно придётся в библиотеках разбираться в том же MFC хотя бы.

Ну а что касается написание сложных программ, то этот навык не привязан к языку. Если можешь написать большое приложение на javascript то сможешь и на C++. Обретение этого навыка состоит из изучения программной инженерии, эксперементов и изучения чужих исходников.

Так что я несогласен с отсутствием логики.

Да и Qt для JS программиста не самый плохой выбор, с учётом того насколько активно там применяется html и Js.
Программу потом можно будет собрать под windows, linux, и macOS.
C 5й версии приложения можно запускать на андроид
а с 5.2 (осень 2013) на IOS

Хотя конечно решение принимать надо с оглядкой на рынок, c оглядкой на количество QT вакансий.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 06.06.2013 в 07:15.
Ответить с цитированием
  #10 (permalink)  
Старый 06.06.2013, 18:59
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от DjDiablo
ну ты перегнул насчёт пяти лет помоему.
Если:
Сообщение от DjDiablo
касается основных конструкций то их можно ну скажем за неделю выучить.
Конечно можно и за год нахвататься опыта, но на изучение тонкостей языка и компиляторов уйдут годы. Вспомни только работу с фасетами, тредами, локалями, потоками и STL .

к примеру финт с потоками:

struct log final : public std::ostream {
	public:
		explicit log(const std::string &type, const std::string &file = "") :
			std::ostream(new buffer(type, file)) {}
		;

		~log() {
			delete std::ostream::rdbuf();
		}

	private:
		struct buffer final : public std::stringbuf {
			public:
				explicit buffer(const std::string &type, const std::string &file) :
					type (type), file (file) {}
				;

				~buffer() {
					std::streambuf::pubsync();
				}

				virtual int sync();

			private:
				const std::string type, file;
			}
		;

		log(const log&) = delete;
		const log& operator=(const log&) = delete;
	}
;


Использую для того чтобы писать красиво в лог:

using LOG_INFO = ::log;
LOG_INFO ("error", (*error)->name) << "file: " << (*file)->name;

Или еще пример:

template <typename T>
struct find_equal : std::binary_function <T, T, bool>
{
	find_equal(const T &value) : value(value) {};

	bool operator()(const T &left, const T &right) const {
		return left == value && right == value;
	}

	private:
		T value;
};

Используется как предикат:
file.erase(std::unique(file.begin(), file.end(), ::find_equal<char>(' ')), file.end());

Хотя сейчас std::binary_function <...> deprecated, потому что можно писать так:

file.erase(std::unique(file.begin(), file.end(), [](const char &left, const char &right) {
     return left == value && right == value;
}), file.end());


Попробуй все это объяснить новичку.
Даже на самый простой вопрос чем отличаются union, struct, class не каждый ответит, особенно если не читал С++11, к примеру:

union __union final {
    const int i;
};
 
using foo = const union ::__union;
foo un = { .i =  0 };

std::cout << un.i << std::endl; // 0


Пруф

Ну и на последок прикоюха с перечислениями:
enum __enum : int { value = 0 };
std::cout << __enum.value << std::endl; // 0


Пруф

Сообщение от DjDiablo
Для продакшн конечно придётся в библиотеках разбираться в том же MFC хотя бы.
MFC, WF, WPF, Qt и пр. boost-подобные библиотеки это уже отдельная история.

Сообщение от DjDiablo
Так что я несогласен с отсутствием логики.
Ну к примеру по какой такой логике имя функции нужно оборачивать в круглые скобки:

void *(*foo)(int *);


Я понимаю если бы там было бы обращение к другим членам класса типа:
(*parent)->method.property


Ну или здесь:

using buffer = std::istreambuf_iterator<char>;
content.assign((buffer(file)), buffer());


Сейчас я понимаю почему это сделано так, но это нужно еще принять )

Или вот приколюха из нового стандарта:
i++++++++++; // i += 5;


Ну или вместо того чтобы добавить std::lexical_cast<...>() они добавили:

stoi, stol, stoll, stoul, stoull, stof, stod, stold, to_string, to_wstring к имеющимся strtod, strtold, strtof, strtoul, strtoull, trtol, strtoll, atoi, atol, atoll

спрашивается нафига?

Последний раз редактировалось monolithed, 11.06.2013 в 13:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа разработки интерфейсов jsgeek Учебные материалы 0 22.03.2013 15:09
Приглашаем в Школу Разработки Интерфейсов Яндекса B~Vladi Учебные материалы 34 05.02.2013 19:39
Есть ли для JS удобная среда разработки с подсветкой синтаксиса? mbp64 Общие вопросы Javascript 5 05.10.2012 11:21
От Java к JavaScript: среда разработки fedotxxl Учебные материалы 1 01.12.2011 19:32
Team leader в группу разработки ( PHP & Java) Juliano Работа 0 16.05.2011 17:02