Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 05.02.2013, 09:41   #1
jimon
 
Сообщений: n/a
C++ Grandmaster Certification

http://www.cppgm.org/

Overview
Participants in this free online course will develop their own C++ compiler, standard library, and toolchain with the following features:
  • Compliant with the latest 2011 standard (C++11)
  • Written entirely in C++ with no third-party dependencies
  • Code generator targeting Linux x86_64
  • Full toolchain including preprocessor, assembler, and linker
  • Will build with itself (self-hosting) and pass provided conformance test suite

Prerequisites
There are no hard prerequisites; the course is open to all. However it would be beneficial if the participant has:
  • 2+ years experience working on a C++ codebase or similar language (Java, C#, C)
  • taken a typical undergraduate Compilers course
  • read the dragon book or similar
  • developed a compiler for a toy language
  • coded and debugged at an assembly level
  • basic Unix/Linux experience
посмотрим на лекции, а то в кпи учили только паскаль компилировать
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ffinder (21.02.2013)
Старый 21.02.2013, 10:06   #2
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

выложили starter kit, регистрация продолжена до 15 марта сам курс рассчитан на год при загрузке 10 часов в неделю

думаю на базе GLR парсера взлетит
 
Ответить с цитированием
Старый 21.02.2013, 14:04   #3
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

как еда для размышлений : http://scottmcpeak.com/elkhound/

Elkhound: A GLR Parser Generator
Elsa: An Elkhound-based C++ Parser
 
Ответить с цитированием
Старый 21.02.2013, 22:36   #4
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: C++ Grandmaster Certification

нуэ, вообще-то парсеры гораздо проще писать на чем-то типа ML/OcaML/F#.
фигачить С++ компилер на чистом С++ это тот еще хардкор.
(Offline)
 
Ответить с цитированием
Старый 22.02.2013, 11:28   #5
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

ffinder
на чистом C++ придется писать lex\yacc аналоги, что не очень и сложно, смысл сертификации создать компилятор C++11 который сам себя скомпилирует
 
Ответить с цитированием
Старый 13.04.2013, 20:48   #6
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

всё же начали ! разработка pa1 идет полным ходом, сам тулкит тасков у них только под линукс, решил проблему с помощью qt creator + mingw

скрипты для тестов у них консольные, за час была написана программа которая прогоняет все тесты под виндой

Нажмите на изображение для увеличения
Название: jimon_lol.png
Просмотров: 245
Размер:	32.1 Кб
ID:	19050

ps. буду суда выкладывать интересные моменты, впереди 5 заданий, на первое дедлайн 5 мая, всего думаю будет около 40 заданий и конец где-то в начале 2014
ps2. C++11 стандарт довольно "увлекательный" местами
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
falcon (14.04.2013)
Старый 16.04.2013, 19:46   #7
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

базовые тесты pa1 успешно пройдены, расширенные юзер тесты из https://github.com/danilchap/cppgm.tests пока еще не пройдены

в итоге в 1500 строк уложились в самый базовый парсер с поддержкой utf8

из интересных моментов узнал что
#include <file.h>
и
#include "file.h"
отличаются очень сильно, в первом случае вы можете использовать в имени файла весь unicode, во втором случае только ascii (даже если сам файл utf8 )

ps. тулза оказалась полезная, добавил поддержку diff, запуск собственных тестов и выложил в опенсорс
https://github.com/jimon/cppgm_tools
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
falcon (17.04.2013)
Старый 18.04.2013, 00:19   #8
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

получили статистику курса :
enrolled: ~10k
cppgm-announce: ~3k
forum.cppgm.org: ~700
projected completing PAs: ~500
переведу :
зарегистрировалось на курс : ~10 тыс человек
подписалось на рассылку cppgm-announce: ~3 тыс человек
зарегистрировалось на основном форуме курса forum.cppgm.org: ~700 человек
ожидаемое количество финалистов: ~500 человек
по личным ощущениям курс оказался не таким сложным как ожидалось, задачи грамотно разбиты по заданиям, каждое задание включает в себя набор тестов, при этом тесты составлены "с подвохом", каждый тест на маленькую фичу стандарта цпп, в итоге проходя все тесты вы точно будете знать каждую мелочь стандарта цпп, хотя изучая его просто так вы бы не обратили бы на это внимание

более-менее рабочий цикл разработки оказался такой : FDD -> TDD -> refactoring
где FDD - feature driven development, TDD - test driven development
нормальным языком : вы сначала реализуете базовый функционал, а потом допиливаете его чтобы он проходил тесты

ps. совсем личные ощущения : это просто эпик давно не было таких ощущений от кодинга, когда ты в два часа ночи матюкаешся на какую-то вещь, ищешь лучшие решения, думаешь о сложных структурах
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо за это полезное сообщение:
falcon (12.05.2013), Harter (18.04.2013), HolyDel (18.04.2013), moka (18.04.2013), pax (30.04.2013), SBJoker (18.04.2013)
Старый 02.05.2013, 18:10   #9
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

PA2 пройден, он был о переводе чисел, символов и строк в бинарный вид.

Теперь ночью с просоня могу сказать что выведет этот код и почему :
std::cout << typeid(0xfabbbbaf).name() << std::endl;
std::cout << typeid(3123123123).name() << std::endl;
Подсказка : он выведет unsigned int и long int. Почему ? смотри 2.14.2.2

Основное веселье было в парсинге чисел, вот например часть sanity-test :
1..e
1..E
1..Ee
1..eEEE.E..EEe.Ee
1e2
5e+
1.e+e-...
.1.O.M.G.123...
..123
..123e
10.0_safaf+1
10.0_safafe+1
Суть в том чтобы лексер выдал такое число за один токен, и только потом мы уже узнали в парсере что он не валиден.
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
falcon (12.05.2013)
Старый 03.05.2013, 20:07   #10
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

PA3 пройден, он был о подсчёте выражений в условиях препроцессора (#if expression).

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

Например :
true ? 5 : 5 / 0u
Результат будет 5u, потому что одно из подвыражений стало беззнаковым.

Задание включало в себя sanity тест размером в 11 мегабайт, примерно такого содержания :
-132 >> 124u % +'a'
-132 >> (124u % +'a')
-132 >> 424 % 124u
-132 >> (defined a % ~u'z')
-132 >> (424 & 124u)
-132 >> (defined a & ~u'z')
После его прохождения я кончел и закурил. (шутка, я не курю =)
 
Ответить с цитированием
Старый 26.09.2013, 22:03   #11
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

внезапно STAYIN ALIVE


продолжаем нашу солянку по PA4, PA5

cppgm stories : находясь in middle of nowhere пойми на какой строчке взялся токен

#define a(x, y) x ## y
#define b(x, y) a(x, y)
b(
b(__L, I),
b(N, E__)
)

cppgm stories : я твои escape sequence шатал

#define a(x) #x
const char * foo = a(“1\n2” \n\ “3\n4”);

ps. выдаст const char * foo = “\”1\\n2\” \n\\ \”3\\n4\””;


cppgm stories : перед превращением потока говн в AST оказалось есть всего три типа говн : литерал, идентификатор и simple (это все keywoards и операторы)
или вершина которая была достигнута в PA4 - задай вопрос автору


PA6 был пройден без заметного батхерта, потому что он достаточно простой (нужно банально перевести граматику в жадный top-down парсер)

ps. чувак участвовал в cppgm, а потом внезапно устроился работать в команду разработчиков visual c++ компилятора
http://forum.cppgm.org/question/2363...d-to-drop-out/
вот такая неказистая жизнь у людей из cppgm
Миниатюры
Нажмите на изображение для увеличения
Название: so_cppgm.png
Просмотров: 341
Размер:	3.1 Кб
ID:	19722  
 
Ответить с цитированием
Старый 12.10.2013, 10:35   #12
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

Открыта предварительная регистрация на следующий курс, начало в 2015
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
falcon (21.10.2013)
Старый 09.02.2014, 00:16   #13
jimon
 
Сообщений: n/a
Ответ: C++ Grandmaster Certification

а мы продолжаем ! вчера закончил PA8

RTK(KW_USING)
string name_specifier;
ast_model_id id_expr_temp;
RSPV(nested_name_specifier, name_specifier)
//RSPV(unqualified_id, id_expr_temp) // Scotty Doesn't Know
RTK(TT_IDENTIFIER)
if(!error)
	id_expr_temp.name = stream[pos - 1].data;
RTK(OP_SEMICOLON)
 
Ответить с цитированием
Старый 10.02.2014, 00:54   #14
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,453 полезных сообщений
(для 6,859 пользователей)
Ответ: C++ Grandmaster Certification

Для незнающих, можно в "пару словах": что этот код делает? Честно сказать, я понимаю что топика не знаю, но даже не зная контекста, обычно читая код имеешь представление что происходит (С++ приходиться иногда читать), тут же, не совсем..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (10.02.2014)
Старый 10.02.2014, 08:38   #15
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,900
Написано 2,149 полезных сообщений
(для 5,782 пользователей)
Ответ: C++ Grandmaster Certification

Кто такой Скотти?
__________________
бложик
geom.io
твиттер
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 12:16.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com