|
05.02.2013, 13:41
|
#1
|
|
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
|
посмотрим на лекции, а то в кпи учили только паскаль компилировать
|
|
|
Сообщение было полезно следующим пользователям:
|
|
21.02.2013, 14:06
|
#2
|
|
Ответ: C++ Grandmaster Certification
выложили starter kit, регистрация продолжена до 15 марта сам курс рассчитан на год при загрузке 10 часов в неделю
думаю на базе GLR парсера взлетит
|
|
|
21.02.2013, 18:04
|
#3
|
|
Ответ: C++ Grandmaster Certification
как еда для размышлений : http://scottmcpeak.com/elkhound/
Elkhound: A GLR Parser Generator
Elsa: An Elkhound-based C++ Parser
|
|
|
|
22.02.2013, 02:36
|
#4
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: C++ Grandmaster Certification
нуэ, вообще-то парсеры гораздо проще писать на чем-то типа ML/OcaML/F#.
фигачить С++ компилер на чистом С++ это тот еще хардкор.
|
(Offline)
|
|
22.02.2013, 15:28
|
#5
|
|
Ответ: C++ Grandmaster Certification
ffinder
на чистом C++ придется писать lex\yacc аналоги, что не очень и сложно, смысл сертификации создать компилятор C++11 который сам себя скомпилирует
|
|
|
14.04.2013, 00:48
|
#6
|
|
Ответ: C++ Grandmaster Certification
всё же начали ! разработка pa1 идет полным ходом, сам тулкит тасков у них только под линукс, решил проблему с помощью qt creator + mingw
скрипты для тестов у них консольные, за час была написана программа которая прогоняет все тесты под виндой
ps. буду суда выкладывать интересные моменты, впереди 5 заданий, на первое дедлайн 5 мая, всего думаю будет около 40 заданий и конец где-то в начале 2014
ps2. C++11 стандарт довольно "увлекательный" местами
|
|
|
Сообщение было полезно следующим пользователям:
|
|
16.04.2013, 23:46
|
#7
|
|
Ответ: C++ Grandmaster Certification
базовые тесты pa1 успешно пройдены, расширенные юзер тесты из https://github.com/danilchap/cppgm.tests пока еще не пройдены
в итоге в 1500 строк уложились в самый базовый парсер с поддержкой utf8
из интересных моментов узнал что
и
отличаются очень сильно, в первом случае вы можете использовать в имени файла весь unicode, во втором случае только ascii (даже если сам файл utf8 )
ps. тулза оказалась полезная, добавил поддержку diff, запуск собственных тестов и выложил в опенсорс
https://github.com/jimon/cppgm_tools
|
|
|
Сообщение было полезно следующим пользователям:
|
|
18.04.2013, 04:19
|
#8
|
|
Ответ: 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 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
02.05.2013, 22:10
|
#9
|
|
Ответ: 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
|
Суть в том чтобы лексер выдал такое число за один токен, и только потом мы уже узнали в парсере что он не валиден.
|
|
|
Сообщение было полезно следующим пользователям:
|
|
04.05.2013, 00:07
|
#10
|
|
Ответ: C++ Grandmaster Certification
PA3 пройден, он был о подсчёте выражений в условиях препроцессора (#if expression).
Довольно весело было программировать что signed\unsigned флаг результата передаётся статически по веткам тернарного оператора, даже если значения не рассчитываются.
Например :
Результат будет 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')
После его прохождения я кончел и закурил. (шутка, я не курю =)
|
|
|
27.09.2013, 02:03
|
#11
|
|
Ответ: 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
|
|
|
12.10.2013, 14:35
|
#12
|
|
Ответ: C++ Grandmaster Certification
Открыта предварительная регистрация на следующий курс, начало в 2015
|
|
|
Сообщение было полезно следующим пользователям:
|
|
09.02.2014, 04:16
|
#13
|
|
Ответ: 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, 04:54
|
#14
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: C++ Grandmaster Certification
Для незнающих, можно в "пару словах": что этот код делает? Честно сказать, я понимаю что топика не знаю, но даже не зная контекста, обычно читая код имеешь представление что происходит (С++ приходиться иногда читать), тут же, не совсем..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.02.2014, 12:38
|
#15
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: C++ Grandmaster Certification
Кто такой Скотти?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:39.
|