Тогда уж так
for(int i=1; i<=100; ++i)
if(i%3 && i%5)
{
std::cout<<i<<std::endl;
continue;
}
std::cout<< (!(i%3)?!(i%5)? «FizzBuzz»:«Fizz»:«Buzz» ) <<std::endl;
А как нормальные пацаны отнесуться к этому?
input([ «FizzBuzz» if not x%3 and not x%5 else «Fizz» if not x%3 else «Buzz» if not x%5 else x for x in range(1, 101)])
А в C++ что мешает вынести весь сахар в одну либу и ей пользоваться — boost тому пример. Или написать свою бибилиотеку с сахаром с нуля с блекджеком и… ну вы поняли. Зачем мне тогда нужен D?
За десятилетия правления Борланда и InPrise он превратился в монстра, заимствовав (украв) часть синтаксиса из С++. Сейчас компания Embarcadero продолжает выращивать этого монстра, в чреве которого вы будете компилировать гигантского размера программы. Кстати и для Андроида тоже.
Я думаю, что для всех уже давно очевидно, что Delphi и его семейка в серьезных делах почили.
/// Вопли автора про "начинающих"
Возможно это вызов и вам, господа дельфисты! Попробуйте написать прогу на С++.
Что касается первого языка — то тут Паскаль очень даже ничего.
/// Вопли автора о обязательном знании плюсов
С++ — это минималистичный язык, возникший как набор макросов от ассемблеристов. Вернее сначала возник С. Но не в этом суть, я не историк.
Почему рядовой программист должен знать С++?
Это примерно как священник, не знающий Библию. Как маркетолог, не знающий о правиле 4П. Как фотомодель без макияжа. Так и С++ — это тот самый необходимый багаж, который должен просто хотя бы лежать в голове на одной из полок.
Для саморазвития очень даже неплохо знать C или C++.
Но это не значит что их нужно знать всем.
/// Скажу про C++ от себя
Синтаксис C++ прекрасен и это мой любимый язык. Пишу в основном только на нем.
Идеальный вариант для своих проектов — вычислительная часть на плюсах в .dll, а GUI на C# или Java
Простите, не удержался, но FreePascal полон багов чуть более чем полностью, поставляется вместе с убогой IDE.
Насчет компонентов — да, можно использовать что угодно — но скорее в теории, чем на практике, Delphi, как и Лазарус вынуждают использовать поставляемые с IDE компоненты. Это отучает от программирования как такового и приучает к рутиному использованию определенного набора компонентов, которые больше нигде и не используются (та же VCL).
Но! Это не проблема самого Pascal. Вполне лаконичный ЯП.
Чистый паскаль как раз совсем не лаконичен:
PROCEDURE Example (VAR ARG1, ARG2: INTEGER)
VAR
One, Two : INTEGER;
BEGIN
{Код}
END;
;
Что мы тут видим? Блок описания для переменных, блок констант, громоздкий синтаксис.
Аналог этой же процедуры на C++:
void Example(int arg1, int arg2){
int one, two;
//Код
}
Я думаю разница очевидна — и это безо всяких примеров с синтаксическим сахором C++ 11.
Вы о соглашениях именования хоть немного слышали?
Они не ограничиваются только Pascal style — https://msdn.microsoft.com/ru-ru/library/ms229043.aspx
Ну а все остальные «доводы» просто смешны.
К вашему сведению уже давно есть C++11, C++14 с строгими перечислениями (enum class) и умными указателями.
Не нужно смешивать C++ и C# — первый это продолжатель Си, второй был создан как помесь Delphi с синтаксисом Java что бы и вы могли «программировать».
Так или иначе в большинстве случаев код приходится «подбивать» под GUI, иногда действительно разумно спроектировать интерфейс и потом написать под него код.
Индексация с нуля — плохо? Ааа, мои глаза! И это висит на хабре?
Объясню вам — на C#`е же который вы вроде бы должны немного знать, раз «показывали брату азы».
Простейший пример, который должен объяснить вам, почему индексация с нуля лучше и удобнее:
Int32[] arrOne = new Int32 [15] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
Int32[] arrTwo = new Int32 [16] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
// Теперь сложим эти массивы в один
// Присмотритесь, ключевой момент для вас, с вашей идеей индексации массивов с 1
Int32[] resultArr = new Int32[arrOne.Length + arrTwo.Length];
// resultArr.Length == 31
for(Int32 i = 0; i < arrOne.Length; ++i) resultArr[i] = arrOne[i];
for(Int32 i = arrOne.Length; i < arrTwo.Length; ++i) resultArr[i] = arrTwo[i];
//А теперь представьте, что индексация в Шарпе идет с единицы...
Надеюсь теперь видно, что индексация с нуля — это не просто так?
Неужели вы думали что вы умнее создателей C, C++, Java, C#?
Выделение памяти в куче через конструкторы почему то напомнило Delphi.
Хорошо, что сейчас объекты классов могут располагаться и в стеке, по сравнению с тем же C#.
Я как раз использую XP. Спасибо.
Ваша статья, как и ваш пример, несомненно, пролила свет на все скрытые аспекты и подводные камни WPF.
то подобный пример будет предпочтительней прочтения двух-трёх толстых книжек.
Пример великолепен.
Теперь я могу быдлокодить без, как вы правильно сказали, книжек.
Еще раз спасибо за столь содержательную статью
Картинка для вас
http://cs13.imagefiles.me/p/086191075125228012204046149162246194251016097051012226/1447054334/107634773/0/da9aeb6205f2bfe402d88f18c1c88da2/d0e31a50335c5b70ebddbfc5d0cec505/0/Daniro/asdf-spaces.ru.jpg
for(int i=1; i<=100; ++i)
if(i%3 && i%5)
{
std::cout<<i<<std::endl;
continue;
}
std::cout<< (!(i%3)?!(i%5)? «FizzBuzz»:«Fizz»:«Buzz» ) <<std::endl;
А как нормальные пацаны отнесуться к этому?
input([ «FizzBuzz» if not x%3 and not x%5 else «Fizz» if not x%3 else «Buzz» if not x%5 else x for x in range(1, 101)])
for(int i=1; i<=100; ++i)
if(!(i%3)||!(i%5))
std::cout<< (!(i%3)?!(i%5)? «FizzBuzz»:«Fizz»:«Buzz» ) <<std::endl;
else std::cout<<i<<std::endl;
Я думаю, что для всех уже давно очевидно, что Delphi и его семейка в серьезных делах почили.
Что касается первого языка — то тут Паскаль очень даже ничего.
Для саморазвития очень даже неплохо знать C или C++.
Но это не значит что их нужно знать всем.
Синтаксис C++ прекрасен и это мой любимый язык. Пишу в основном только на нем.
Идеальный вариант для своих проектов — вычислительная часть на плюсах в .dll, а GUI на C# или Java
Насчет компонентов — да, можно использовать что угодно — но скорее в теории, чем на практике, Delphi, как и Лазарус вынуждают использовать поставляемые с IDE компоненты. Это отучает от программирования как такового и приучает к рутиному использованию определенного набора компонентов, которые больше нигде и не используются (та же VCL).
Чистый паскаль как раз совсем не лаконичен:
;
Что мы тут видим? Блок описания для переменных, блок констант, громоздкий синтаксис.
Аналог этой же процедуры на C++:
Я думаю разница очевидна — и это безо всяких примеров с синтаксическим сахором C++ 11.
Они не ограничиваются только Pascal style — https://msdn.microsoft.com/ru-ru/library/ms229043.aspx
Ну а все остальные «доводы» просто смешны.
К вашему сведению уже давно есть C++11, C++14 с строгими перечислениями (enum class) и умными указателями.
Не нужно смешивать C++ и C# — первый это продолжатель Си, второй был создан как помесь Delphi с синтаксисом Java что бы и вы могли «программировать».
Надо было написать второй цикл так:
Вот теперь все правильно.
Объясню вам — на C#`е же который вы вроде бы должны немного знать, раз «показывали брату азы».
Простейший пример, который должен объяснить вам, почему индексация с нуля лучше и удобнее:
Надеюсь теперь видно, что индексация с нуля — это не просто так?
Неужели вы думали что вы умнее создателей C, C++, Java, C#?
$phpIsHTMLtemplate
И его синтаксис, особенно создание переменных.
Хорошо, что сейчас объекты классов могут располагаться и в стеке, по сравнению с тем же C#.
Но зачем?
Ваша статья, как и ваш пример, несомненно, пролила свет на все скрытые аспекты и подводные камни WPF.
Пример великолепен.
Теперь я могу быдлокодить без, как вы правильно сказали, книжек.
http://cs13.imagefiles.me/p/086191075125228012204046149162246194251016097051012226/1447054334/107634773/0/da9aeb6205f2bfe402d88f18c1c88da2/d0e31a50335c5b70ebddbfc5d0cec505/0/Daniro/asdf-spaces.ru.jpg
Хотят поработить мир с помощью Go
Почему?
Asm все равно быстрее…
Теперь хочу посвятить жизнь написанию гневных публикаций против Go.
Программист C++ легко освоит его, это да.
Но в обратном я сомневаюсь.