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
 
Кто такой Скотти?

HolyDel 10.02.2014 13:21

Ответ: C++ Grandmaster Certification
 
гг кинца под названием Евротур

jimon 10.02.2014 13:34

Ответ: C++ Grandmaster Certification
 
Цитата:

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

это часть реализации парсинга using выражения в случае :
Код:

namespace B
{
    int x;
};
using B::x; // вот этого

http://www.open-std.org/jtc1/sc22/wg...2012/n3485.pdf
в стандарте это есть на 1177 странице :
Код:

using-declaration:
    using typenameopt nested-name-specifier unqualified-id ;
    using :: unqualified-id ;

только похоже там нифига не unqualified-id, а скорее qualified-id ! :crazy: учитывая что надо было тесты срочно проходить, то влепил просто идентификатор, потом разберемся :crazy: Scotty Doesn't Know ! :crazy:

radiobutton 10.02.2014 15:55

Ответ: C++ Grandmaster Certification
 
Цитата:

Сообщение от Mr_F_ (Сообщение 274091)
Кто такой Скотти?

http://www.youtube.com/watch?v=0Vyj1C8ogtE

jimon 13.02.2014 15:38

Ответ: C++ Grandmaster Certification
 
Цитата:

Dear C++ Grandmaster Certification Participant,

We are pleased to confirm that you have passed the PA8 grading, and remain enrolled in this run of the course.

The build queue is now operational again.

You should now be working on RAB and PA9. For those that have completed RAB and PA9, you can work ahead based on the draft PA10 through PAN.

Thanks,
CPPGM Support.
ну все, можно еще 1-2 месяца спокойно жить =)

jimon 18.02.2014 00:39

Ответ: C++ Grandmaster Certification
 
Вложений: 1
Курс становится сложнее, в бой идет CI запущенный под целевой платформой :crazy: (я уж не говорю что гит репо был с самого начала)



А где вы еще блеа видели CI на pet project ? :crazy:


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

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