forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   C++ Grandmaster Certification (http://forum.boolean.name/showthread.php?t=17834)

jimon 05.02.2013 13:41

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

посмотрим на лекции, а то в кпи учили только паскаль компилировать :crazy:

jimon 21.02.2013 14:06

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

думаю на базе GLR парсера взлетит

jimon 21.02.2013 18:04

Ответ: C++ Grandmaster Certification
 
как еда для размышлений : http://scottmcpeak.com/elkhound/

Цитата:

Elkhound: A GLR Parser Generator
Elsa: An Elkhound-based C++ Parser

ffinder 22.02.2013 02:36

Ответ: C++ Grandmaster Certification
 
нуэ, вообще-то парсеры гораздо проще писать на чем-то типа ML/OcaML/F#.
фигачить С++ компилер на чистом С++ это тот еще хардкор.

jimon 22.02.2013 15:28

Ответ: C++ Grandmaster Certification
 
ffinder
на чистом C++ придется писать lex\yacc аналоги, что не очень и сложно, смысл сертификации создать компилятор C++11 который сам себя скомпилирует :crazy:

jimon 14.04.2013 00:48

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

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

Вложение 19050

ps. буду суда выкладывать интересные моменты, впереди 5 заданий, на первое дедлайн 5 мая, всего думаю будет около 40 заданий и конец где-то в начале 2014 :crazy:
ps2. C++11 стандарт довольно "увлекательный" местами :crazy:

jimon 16.04.2013 23:46

Ответ: 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

jimon 18.04.2013 04:19

Ответ: 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. совсем личные ощущения : это просто эпик :crazy: давно не было таких ощущений от кодинга, когда ты в два часа ночи матюкаешся на какую-то вещь, ищешь лучшие решения, думаешь о сложных структурах :crazy:

jimon 02.05.2013 22:10

Ответ: 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
Суть в том чтобы лексер выдал такое число за один токен, и только потом мы уже узнали в парсере что он не валиден.

jimon 04.05.2013 00:07

Ответ: 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')

После его прохождения я кончел и закурил. (шутка, я не курю =)

jimon 27.09.2013 02:03

Ответ: C++ Grandmaster Certification
 
Вложений: 1
внезапно 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++ компилятора :crazy:
http://forum.cppgm.org/question/2363...d-to-drop-out/
вот такая неказистая жизнь у людей из cppgm

jimon 12.10.2013 14:35

Ответ: C++ Grandmaster Certification
 
Открыта предварительная регистрация на следующий курс, начало в 2015

jimon 09.02.2014 04:16

Ответ: 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)


moka 10.02.2014 04:54

Ответ: C++ Grandmaster Certification
 
Для незнающих, можно в "пару словах": что этот код делает? Честно сказать, я понимаю что топика не знаю, но даже не зная контекста, обычно читая код имеешь представление что происходит (С++ приходиться иногда читать), тут же, не совсем..

Mr_F_ 10.02.2014 12:38

Ответ: C++ Grandmaster Certification
 
Кто такой Скотти?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot