Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перспективный язык "надежного программирования" 
:(
    Опции темы
Sun
Дата 20.10.2015, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(kemiisto @  20.10.2015,  12:30 Найти цитируемый пост)
Биологический возраст, очевидно, не играет здесь никакой роли.

То-есть за вашу выдающеюся карьеру, вы достигли гораздо больших высот чем Гвидо Россум? Боже мой! Достойны ли мы тут вообще чатиться рядом с вами?!!

Цитата

Ван Россум родился и вырос в Нидерландах, где он закончил Амстердамский университет по специальности математика и информатика в 1982 году. Затем он работал в различных исследовательских институтах, в том числе Голландском Центре Математики и Информатики (Амстердам), Национальном Институте Стандартов (США) и Corporation for National Research Initiatives (США).

В 2001 году ван Россум получил премию Free Software Award. В 2002 году он получил премию Нидерландской Ассоциации Профессионалов UNIX (NLUUG). В 2006 он был признан Ассоциацией вычислительной техники как Выдающийся Инженер.

В декабре 2005 года ван Россум был принят на работу в Google[4], где он разработал на Python веб-приложение для рецензирования кода (code-review) Mondrian. Также принимал активное участие в разработке компанией Google сервиса хостинга сайтов и web-приложений Google App Engine. 7 декабря 2012 года был последним днём работы в Google[5]. C 1 января 2013 приступил к работе в Dropbox[2].


Цитата(kemiisto @  20.10.2015,  12:30 Найти цитируемый пост)
Во-первых, более компактно не означает более понятно. Ну или, как минимум, не всегда означает.

Ну давайте тогда так - напишем функцию вычисления факториала, свою собственную, средствами одного только языка. Используйте для этого на выбор любой язык, который считаете нужным. И попробуем сравнить - будет ли это понятней и компактней чем на Питон.

Это сообщение отредактировал(а) Sun - 20.10.2015, 15:50


--------------------
Account removed
PM MAIL   Вверх
Guinness
Дата 20.10.2015, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Цитата(kemiisto @  20.10.2015,  16:30 Найти цитируемый пост)
Это что за новый такой критерий качества языка (отсутствие критики в интернете)?

Это не было критерием, я просто привёл свои наблюдения.
Цитата(kemiisto @  20.10.2015,  16:30 Найти цитируемый пост)
все языки "поливают" грязью заслуженно

А где я сказал, что заслуженно или не заслуженно? Просто такую реакцию я вижу впервые, вот и удивляюсь.
PM MAIL   Вверх
Sun
Дата 20.10.2015, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Ну чтож, пока наш гигант мысли собирается с мыслями, приведу пример функции факториала на Питоне. Факториал выбран специально, так как на собеседованиях нередко просят написать именно его. Меня обвинили во вранье и я вынужден защищаться. Пример не идеален, но он неплохо раскрывает возможности языка:
Код

factorial = lambda x: ( ( x <= 1 ) and 1 ) or x * factorial( x - 1 )



--------------------
Account removed
PM MAIL   Вверх
Sartorius
Дата 20.10.2015, 18:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



А чем так плох тот же факториал на С ? smile

Код

int fact(int n) {return n <= 1 ? 1 : n * fact(n - 1); }


Цитата(Sun @  20.10.2015,  18:55 Найти цитируемый пост)
Факториал выбран специально, так как на собеседованиях нередко просят написать именно его.

Кстати какому кандидату Вы отдали бы предпочтение? Который итеративную или рекурсивную реализацию напишет?  smile 
PM MAIL ICQ   Вверх
Sun
Дата 20.10.2015, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Sartorius @  20.10.2015,  15:04 Найти цитируемый пост)
Кстати какому кандидату Вы отдали бы предпочтение? Который итеративную или рекурсивную реализацию напишет?    

В наше время, если претендент помнит слово факториал - его уже можно брать с руками и ногами  smile 

Лучше с рекурсией, конечно. Для раскрытия темы.


--------------------
Account removed
PM MAIL   Вверх
Sartorius
Дата 20.10.2015, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата(Sun @  20.10.2015,  19:26 Найти цитируемый пост)
Лучше с рекурсией, конечно. Для раскрытия темы. 

А вот что по этому поводу пишет Макконел 

Цитата

не используйте рекурсию для факториалов и чисел Фибоначчи.
одна из проблем с учебниками по выч. технике в том, что они предлагают глупые примеры рекурсии. типичными примерами рекурсии являются вычисление факториала или последовательности Фибоначчи. рекурсия - мощный инструмент, и очень глупо использовать ее в этих 2х случаях. если бы программист, работающий у мееня, применял рекурсию для вычисления факториала, я бы нанял кого-то другого.....не считая медленного выполнения и непредсказуемого использования памяти, рекурсивный вариант ф-ции трудней для понимания.


Но это все  smile

PM MAIL ICQ   Вверх
Sun
Дата 20.10.2015, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Sartorius @  20.10.2015,  15:04 Найти цитируемый пост)
А чем так плох тот же факториал на С ? 

Ну хотя бы тем, что для вызова этой функции надо маленький огород нагородить:

Код

#include <stdio.h>
#include <stdlib.h>

int fact(int n) {return n <= 1 ? 1 : n * fact(n - 1); }
int main(int argc, char *argv[])
{
  int f = fact(5);
  printf("result %d", f);
  return 0;
}


тогда как на Питоне полностью рабочая программа будет как:

Код

factorial = lambda x: ( ( x <= 1 ) and 1 ) or x * factorial( x - 1 )
factorial(5)



--------------------
Account removed
PM MAIL   Вверх
Фантом
Дата 20.10.2015, 18:36 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Sun @  20.10.2015,  14:13 Найти цитируемый пост)
То есть не дает компактный код? Или понятный код не даёт? Можете привести пример вранья? Ну-ка напишите мне этот кусочек кода на каком-то другом языке, более компактно и понятно?
v = [0,1,2,3,4]
r = reduce(lambda x, y: x + y, v)
print®

Вы таки будете много смеяться, но 
Код

write(*,*) sum((/0,1,2,3,4/))

Если что - это Фортран.  smile 
PM   Вверх
Alexeis
Дата 20.10.2015, 18:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Sun @  20.10.2015,  19:26 Найти цитируемый пост)
Лучше с рекурсией, конечно. Для раскрытия темы. 

Сисег? 

Вычисление факториала еще до того как будет выполнена 1я строчка кода smile 
Код

#include <iostream>

template<int N>
struct Factorial
{
 enum { value = N * Factorial<N-1>::value };
};

template<>
struct Factorial<1>
{
 enum { value = 1 };
};

int main()
{
 // Example use
 const int fact5 = Factorial<5>::value;
 std::cout << fact5;
 return 0;
}

Но за такой синтаксис поубивал бы )))


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sun
Дата 20.10.2015, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Sartorius @  20.10.2015,  15:33 Найти цитируемый пост)
А вот что по этому поводу пишет Макконел 

Тем не менее, подавляющее большинство интервьюеров хотят увидеть именно рекурсию. Можно сказать требуют этого.

Добавлено через 1 минуту и 44 секунды
Цитата(Фантом @  20.10.2015,  15:36 Найти цитируемый пост)
Если что - это Фортран. 

Ну тут вы вызвали готовую функцию sum. Можно усложнить код внутри безымянной функции.


--------------------
Account removed
PM MAIL   Вверх
Sartorius
Дата 20.10.2015, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Alexeis, забавный трюк  smile  Но для значений, определяемых во время компиляции, лучше использовать таблицу  smile 
PM MAIL ICQ   Вверх
Фантом
Дата 20.10.2015, 18:43 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Sun @  20.10.2015,  18:55 Найти цитируемый пост)
Ну чтож, пока наш гигант мысли собирается с мыслями, приведу пример функции факториала на Питоне. Факториал выбран специально, так как на собеседованиях нередко просят написать именно его. Меня обвинили во вранье и я вынужден защищаться. Пример не идеален, но он неплохо раскрывает возможности языка:
 Продолжаем ржать. Снова Фортран:
Код

function ifact(n)
 ifact=product((/(i,i=2,n)/))
end

Вызов с выводом, если надо (тоже полная программа):
Код

write(*,*) ifact(10)
end


Добавлено через 2 минуты и 3 секунды
Цитата(Sun @  20.10.2015,  19:37 Найти цитируемый пост)

Ну тут вы вызвали готовую функцию sum.
 Ну я же не упрекаю Вас в том, что Вы воспользовались готовой лямбдой. У каждого языка - свои возможности.  smile 

 
Цитата(Sun @  20.10.2015,  19:37 Найти цитируемый пост)
 Можно усложнить код внутри безымянной функции. 
 Можно, усложните.

PM   Вверх
Sun
Дата 20.10.2015, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Фантом @  20.10.2015,  15:43 Найти цитируемый пост)
Вызов с выводом, если надо (тоже полная программа):

Прекрасно!  smile Итого полный код вашей программы занял 5 строк, моей 2.


--------------------
Account removed
PM MAIL   Вверх
Фантом
Дата 20.10.2015, 18:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Sun @  20.10.2015,  19:46 Найти цитируемый пост)
Итого полный код вашей программы занял 5 строк, моей 2. 
 Так ведь Ваша программа ничего не выводит (и вообще, может, еще не работает   smile ). А если чуть более серьезно, то аналогичная функциональность обеспечивается двумя строками:
Код

write(*,*) product((/(i,i=2,10)/))
end


PM   Вверх
Sun
Дата 20.10.2015, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Фантом @  20.10.2015,  15:50 Найти цитируемый пост)
Так ведь Ваша программа ничего не выводит (и вообще, может, еще не работает    ). А если чуть более серьезно, то аналогичная функциональность обеспечивается двумя строками:

Цитата

Python 2.7.10 (default, Sep 24 2015, 17:50:09) 
[GCC 5.1.1 20150618 (Red Hat 5.1.1-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> factorial = lambda x: ( ( x <= 1 ) and 1 ) or x * factorial( x - 1 )
>>> factorial(5)
120
>>> 


Ваш пример выглядит внушающе  smile К сожалению Фортраном не владею, но похоже весьма мощный язык.


--------------------
Account removed
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1737 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.