ZuriHac: практикуСмся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π’ июнС этого Π³ΠΎΠ΄Π° Π² нСбольшом ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΎΠΌ Π³ΠΎΡ€ΠΎΠ΄ΠΊΠ΅ РаппСрсвилС ΡƒΠΆΠ΅ Π² дСсятый Ρ€Π°Π· ΠΏΡ€ΠΎΡˆΠ»ΠΎ мСроприятиС ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ZuriHac. Π’ этот Ρ€Π°Π· Π½Π° Π½Ρ‘ΠΌ ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π±ΠΎΠ»Π΅Π΅ пятисот Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ Π₯аскСлля, ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π΄ΠΎ ΠΎΡ‚Ρ†ΠΎΠ²-основатСлСй языка. Π₯отя ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ это мСроприятиС Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½ΠΎΠΌ, всё ΠΆΠ΅ ΠΎΠ½ΠΎ Π½Π΅ являСтся ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½ΠΎΠΌ Π² классичСском смыслС. Π•Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… программистских. ΠœΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΏΡ€ΠΎ ZuriHac ΠΏΠΎ счастливой случайности, поучаствовали Π² Π½Π΅ΠΌ, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ считаСм своим Π΄ΠΎΠ»Π³ΠΎΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΊΠ΅!

ZuriHac: практикуСмся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

О нас

Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ Π΄Π²ΠΎΠ΅ студСнтов 3-Π³ΠΎ курса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°Β» НИУ Π’Π¨Π­ β€” Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³: Василий Алфёров ΠΈ Π•Π»ΠΈΠ·Π°Π²Π΅Ρ‚Π° ВасилСнко. Π£Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для нас ΠΎΠ±ΠΎΠΈΡ… Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ с Ρ†ΠΈΠΊΠ»Π° Π»Π΅ΠΊΡ†ΠΈΠΉ Π”. Н. Москвина Π½Π° 2-ΠΌ курсС унивСрситСта. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Василий участвуСт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Google Summer of Code, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ занимаСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ алгСбраичСских Π³Ρ€Π°Ρ„ΠΎΠ² Π½Π° языкС Π₯аскСлль ΠΏΠΎΠ΄ руководством ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Alga. Π•Π»ΠΈΠ·Π°Π²Π΅Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π² курсовой Ρ€Π°Π±ΠΎΡ‚Π΅, посвящённой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π°Π½Ρ‚ΠΈ-ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ².

Π€ΠΎΡ€ΠΌΠ°Ρ‚ мСроприятия

Π¦Π΅Π»Π΅Π²ΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, программисты, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΡ… Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ, исслСдоватСли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΠΈ просто ΡƒΠ²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Π΅ Π₯аскСллСм люди. Π’ этом Π³ΠΎΠ΄Ρƒ Π² мСстС провСдСния – унивСрситСтС HSR Hochschule fΓΌr Technik Rapperswil – ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ пятидСсяти ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° языкС Haskell со всСго ΠΌΠΈΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ своих ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΈ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΡ… Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ свСТих людСй.

ZuriHac: практикуСмся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π€ΠΎΡ‚ΠΎ ΠΈΠ· Twitter ZuriHac

Π‘Ρ…Π΅ΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ простая: Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ своём ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° страничкС мСроприятия. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ дСнь Ρƒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΏΠΎ Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΡŒ сСкунд Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ со сцСны, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΈ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π²ΡˆΠΈΠ΅ΡΡ люди Ρ€Π°Π·Ρ‹ΡΠΊΠΈΠ²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π£ нас ΠΏΠΎΠΊΠ° собствСнных ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅Ρ‚, Π½ΠΎ ΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚ΠΈΠΌ внСсти свой Π²ΠΊΠ»Π°Π΄ Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ участники. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Ρ‘Ρ… Π΄Π½Π΅ΠΉ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с двумя Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, совмСстноС ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΆΠΈΠ²ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ взаимодСйствиС Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ – Π½Π° ZuriHac ΠΌΡ‹ смогли Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹Ρ… для нас областях ΠΈ смогли ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π΄Π²ΡƒΠΌ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, Π·Π°ΠΊΡ€Ρ‹Π² ΠΏΠΎ Π·Π°Π΄Π°Ρ‡Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Помимо Ρ†Π΅Π½Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, Π½Π° ZuriHac Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ нСсколько Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ мастСр-классов. Нам особСнно запомнились Π΄Π²Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ. На ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… АндрСй ΠœΠΎΡ…ΠΎΠ² ΠΈΠ· унивСрситСта Ньюкасла рассказал ΠΎ сСлСктивных Π°ΠΏΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Π°Ρ… β€” классС Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ ΠΌΠΎΠ½Π°Π΄Π°ΠΌΠΈ. На Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основатСлСй Π₯аскСлля, Π‘Π°ΠΉΠΌΠΎΠ½ ΠŸΠ΅ΠΉΡ‚ΠΎΠ½ ДТонс, рассказывал ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ устроСн Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ² Π² компиляторС GHC.

ZuriHac: практикуСмся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ЛСкция Π‘Π°ΠΉΠΌΠΎΠ½Π° ΠŸΠ΅ΠΉΡ‚ΠΎΠ½Π° ДТонса. Π€ΠΎΡ‚ΠΎ ΠΈΠ· Twitter ZuriHac

ΠœΠ°ΡΡ‚Π΅Ρ€-классы, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π²ΠΎ врСмя Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π°, Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π² зависимости ΠΎΡ‚ уровня ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ участников. Π—Π°Π΄Π°Ρ‡ΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π²ΡˆΠΈΠ΅ΡΡ участникам, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ²ΡˆΠΈΠΌΡΡ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ слоТности. НСмногочислСнноС, Π½ΠΎ Π΄Ρ€ΡƒΠΆΠ½ΠΎΠ΅ сообщСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² свои ряды Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Для понимания Π»Π΅ΠΊΡ†ΠΈΠΉ АндрСя ΠœΠΎΡ…ΠΎΠ²Π° ΠΈ Π‘Π°ΠΉΠΌΠΎΠ½Π° ΠŸΠ΅ΠΉΡ‚ΠΎΠ½Π° ДТонса, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ пригодился ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ Π² унивСрситСтС курс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования.

Как для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… участников, Ρ‚Π°ΠΊ ΠΈ для Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² рСгистрация Π½Π° мСроприятиС бСсплатна. ΠœΡ‹ ΠΏΠΎΠ΄Π°Π»ΠΈ заявки Π½Π° участиС Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… числах июня, послС Ρ‡Π΅Π³ΠΎ довольно быстро Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ ΠΈΠ· списка оТидания Π² список ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½Π½Ρ‹Ρ… участников.

А сСйчас ΠΌΡ‹ расскаТСм ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈ участиС.

Pandoc

Pandoc β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ тСкстовых Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², фактичСски β€” ΠΈΠ· любого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² любой. НапримСр, ΠΈΠ· docx Π² pdf, ΠΈΠ»ΠΈ ΠΈΠ· Markdown Π² MediaWiki. Π•Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€ Π”ΠΆΠΎΠ½ ΠœΠ°ΠΊΠ€Π°Ρ€Π»Π΅ΠΉΠ½ β€” профСссор философии Π² ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΠΉΡΠΊΠΎΠΌ унивСрситСтС Π² Π‘Π΅Ρ€ΠΊΠ»ΠΈ. Π’ΠΎΠΎΠ±Ρ‰Π΅, Pandoc довольно извСстСн, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ наши Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Pandoc написан Π½Π° Π₯аскСллС.

ZuriHac: практикуСмся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Бписок Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Pandoc. На сайтС Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ†Π΅Π»Ρ‹ΠΉ Π³Ρ€Π°Ρ„, Π½ΠΎ эта ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ Π½Π΅ помСщаСтся.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π² Pandoc Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° прямая конвСртация для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΡΡ‚ΠΎΠ»ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ³ΠΎ мноТСства ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартноС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: сначала вСсь Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ пСрСводится Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎ этому Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ гСнСрируСтся Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«ASTΒ», Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Abstract Syntax Tree, ΠΈΠ»ΠΈ абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто: для этого Π½ΡƒΠΆΠ½ΠΎ лишь Π·Π°Π΄Π°Ρ‚ΡŒ Π² качСствС Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Β«nativeΒ»

$ cat example.html
<h1>Hello, World!</h1>

$ pandoc -f html -t native example.html
[Header 1 ("hello-world",[],[]) [Str "Hello,",Space,Str "World!"]]

Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотя Π±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Π₯аскСллСм, ΡƒΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎ этому Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Pandoc написан ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π₯аскСллС: Π²Ρ‹Π²ΠΎΠ΄ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” это прСдставлСниС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… структур Pandoc Π² Π²ΠΈΠ΄Π΅ строки, созданноС ΠΏΠΎ подобию Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ дСлаСтся Π² Π₯аскСллС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

Π˜Ρ‚Π°ΠΊ, здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС β€” это рСкурсивная структура, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΡƒΠ·Π»Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится список. НапримСр, Π½Π° самом Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ находится список ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта β€” Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня с Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ β€œhello-world”,[],[]. Π’Π½ΡƒΡ‚Ρ€ΠΈ этого Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° спрятан список ΠΈΠ· строки β€œHello,”, ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΈ строки β€œWorld!”.

Как Π²ΠΈΠ΄Π½ΠΎ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π½Π΅ сильно отличаСтся ΠΎΡ‚ HTML. Оно прСдставляСт ΠΈΠ· сСбя Π΄Π΅Ρ€Π΅Π²ΠΎ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΡƒΠ·Π΅Π» сообщаСт ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ своих ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², Π° Π² Π»ΠΈΡΡ‚ΡŒΡΡ… находится собствСнно содСрТимоС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Если ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для всСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

data Pandoc = Pandoc Meta [Block]

Π—Π΄Π΅ΡΡŒ Block β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… говорится Π²Ρ‹ΡˆΠ΅, Π° Meta β€” это мСтаинформация ΠΏΡ€ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π²Ρ€ΠΎΠ΄Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π΄Π°Ρ‚Ρ‹ создания, Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² β€” для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² это Ρ€Π°Π·Π½ΠΎΠ΅, ΠΈ Pandoc стараСтся ΠΏΠΎ возмоТности ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

ΠŸΠΎΡ‡Ρ‚ΠΈ всС конструкторы Ρ‚ΠΈΠΏΠ° Block β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Header ΠΈΠ»ΠΈ Para (ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„) β€” ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ список Π²Π΅Ρ€ΡˆΠΈΠ½ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня β€” Inline, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. НапримСр, Space ΠΈΠ»ΠΈ Str β€” это конструкторы Ρ‚ΠΈΠΏΠ° Inline, Ρ‚Π°ΠΊΠΆΠ΅ Π² свой ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Inline прСвращаСтся HTML-Ρ‚Π΅Π³ . ΠœΡ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ смысла ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этих Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ здСсь.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Pandoc являСтся ΠΌΠΎΠ½ΠΎΠΈΠ΄ΠΎΠΌ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ пустой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΈ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Π­Ρ‚ΠΈΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ написании Reader’ов β€” ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π° части ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всё вмСстС Π² ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. ΠŸΡ€ΠΈ этом мСтаинформация собСрётся со всСх частСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° сразу.

ΠŸΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ, скаТСм, ΠΈΠ· LaTeX’а Π² HTML, сначала ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ LaTeXReader, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² AST, ΠΏΠΎΡ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ HTMLWriter, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ AST Π² HTML. Благодаря Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ число ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΉ β€” достаточно для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Reader ΠΈ Writer, ΠΈ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΉ станут автоматичСски ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ.

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ такая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ свои нСдостатки, Π΄Π°Π²Π½ΠΎ прСдсказанныС спСциалистами Π² области Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π‘Π°ΠΌΡ‹ΠΌ сущСствСнным являСтся ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ. Если ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ достаточно ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ΅, придётся ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎ всСх Reader’ах ΠΈ Writer’ах. НапримСр, ΠΎΠ΄Π½Π° ΠΈΠ· стоящих ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Pandoc Π·Π°Π΄Π°Ρ‡ β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° слоТных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†. БСйчас Pandoc ΡƒΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самыС простыС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ, столбцами ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйкС. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ colspan Π² HTML Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Одной ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния являСтся отсутствиС Π΅Π΄ΠΈΠ½ΠΎΠΉ схСмы прСдставлСния Ρ‚Π°Π±Π»ΠΈΡ† Π²ΠΎ всСх ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… β€” соотвСтствСнно, нСясно, Π² ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ прСдставлСнии. Но ΠΈ послС Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прСдставлСния Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС Reader’ы ΠΈ Writer’ы, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ.

Π―Π·Ρ‹ΠΊ Haskell Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ большой любви Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Haskell извСстСн ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌΠΈ возмоТностями Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тСкстов. Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° parsec β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования β€” ΠΌΠΎΠ½ΠΎΠΈΠ΄Ρ‹, ΠΌΠΎΠ½Π°Π΄Ρ‹, Π°ΠΏΠ»Π»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Ρ‹ β€” для написания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… парсСров. Π’ΡΡŽ ΠΌΠΎΡ‰ΡŒ Parsec ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с HaskellWiki, Π³Π΄Π΅ разбираСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ парсСр простого ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка программирования. РазумССтся, Parsec Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ Π² Pandoc.

Если ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Ρ‚ΠΎ ΠΌΠΎΠ½Π°Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ парсинга, ΠΊΠΎΠ³Π΄Π° сначала ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ΄Π½ΠΎ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. НапримСр, Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

whileParser :: Parser Stmt
whileParser = whiteSpace >> statement

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π», Π° ΠΏΠΎΡ‚ΠΎΠΌ statement β€” ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Parser Stmt.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π² случаС, Ссли ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. НапримСр,

statement :: Parser Stmt
statement = parens statement <|> sequenceOfStmt

ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ statement Π² скобках, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ нСсколько statement’ов.

АппликативныС Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² основном ΠΊΠ°ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ для ΠΌΠΎΠ½Π°Π΄. НапримСр, ΠΏΡƒΡΡ‚ΡŒ функция tok Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚ΠΎΠΊΠ΅Π½ (это Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ функция ΠΈΠ· LaTeXReader). ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ

const <$> tok <*> tok

Она ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π²Π° Ρ‚ΠΎΠΊΠ΅Π½Π° подряд ΠΈ Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΈΠ· Π½ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ.

Для всСх этих классов Π² Π₯аскСллС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ красивыС ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Reader’ов ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° ASCII-Π°Ρ€Ρ‚. Волько ΠΏΠΎΠ»ΡŽΠ±ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° этот Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Наши Π·Π°Π΄Π°Ρ‡ΠΈ Π±Ρ‹Π»ΠΈ связаны с LaTeXReader’ом. Π—Π°Π΄Π°Ρ‡Π° Василия Π±Ρ‹Π»Π° Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ mbox ΠΈ hbox, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈ написании ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² LaTeX. Π’ отвСтствСнности Π•Π»ΠΈΠ·Π°Π²Π΅Ρ‚Ρ‹ Π±Ρ‹Π»Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ epigraph, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ эпиграфы Π² LaTeX Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

Hatrace

Π’ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах часто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ систСмный Π²Ρ‹Π·ΠΎΠ² ptrace. Он ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈ симуляции ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, позволяя ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. НапримСр, вСсьма полСзная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° strace ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя ΠΈΠΌΠ΅Π½Π½ΠΎ ptrace.

Hatrace β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ интСрфСйс для ptrace Π² Π₯аскСлль. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сам ptrace сильно Π½Π°Π²ΠΎΡ€ΠΎΡ‡Π΅Π½ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ довольно слоТно, особСнно ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков.

Hatrace ΠΏΡ€ΠΈ запускС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ strace ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π•Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ strace Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π±ΠΎΠ»Π΅Π΅ простой интСрфСйс, Ρ‡Π΅ΠΌ просто ptrace.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ hatrace ΡƒΠΆΠ΅ ΠΎΡ‚Π»ΠΎΠ²ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ нСприятный Π±Π°Π³ Π² компиляторС Π₯аскСлля GHC β€” Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡƒΠ±ΠΈΡ‚Ρ‹ΠΌ Π² нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΏΡ€ΠΈ пСрСзапускС. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π·Π° ΠΎΠ΄ΠΈΠ½ запуск, ΠΊΠΎΠ³Π΄Π° случайныС убивания воспроизводили ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π·Π° Π΄Π²Π° часа.

ΠœΡ‹ добавляли Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ интСрфСйсы систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” Π•Π»ΠΈΠ·Π°Π²Π΅Ρ‚Π° добавляла brk, Π° Василий добавлял mmap. По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ нашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ просто ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ этих систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΈ использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ