Cucina o assemblaggio? Quando la ristorazione italiana rischia di perdere la sua anima
- /
- 21 novembre 2025
Tra semilavorati e piatti “montati”, la tradizione artigianale lascia spazio alla velocità: una riflessione sul valore autentico della cucina fatta a mano
La ristorazione italiana, un tempo simbolo di passione, tradizione e maestria culinaria, sta vivendo un cambiamento profondo e inquietante. Oggi, cucinare sembra essere diventato sempre meno un atto creativo e artigianale, e sempre più una questione di assemblaggio. Sempre più spesso ci si affida ai semi preparati, che permettono di risparmiare tempo ma, purtroppo, anche qualità. La cucina non è più una storia che si racconta, ma un compito che si porta a termine.
Un esempio che ben rappresenta questa evoluzione è la torta di mele che ho preparato recentemente. Si tratta di un dolce semplice, ma che richiede comunque una buona dose di attenzione e cura. Ho deciso di prepararla in modo artigianale, a mano, utilizzando solo burro, zucchero, uova, farina, lievito e delle mele fresche. Ebbene, nonostante il lavoro “fatto a mano” e il rispetto per la tradizione, il tutto mi è costato solo 30 minuti di lavoro e un foodcost di 7,50€ per 16 persone (1,7 kg).
In un'epoca in cui la maggior parte delle torte di mele sono preparate con basi già pronte, che richiedono solo l'aggiunta di pochi ingredienti, questo approccio artigianale potrebbe sembrare “superato”. Ma è davvero così? La realtà è che, nonostante il tempo e il lavoro dedicato, i costi non sono affatto proibitivi. Questo mi fa riflettere su quanto, in realtà, la comodità dei semi preparati non giustifichi un risparmio reale in termini di qualità, gusto e economia.
La torta che ho preparato è venuta benissimo, soffice, fragrante e profumata, ma anche se la preparazione è stata relativamente rapida, è stata anche estremamente soddisfacente. Il piacere di lavorare l’impasto, di scegliere le mele giuste, di vedere il risultato finale, è un'esperienza che non può essere sostituita da una torta fatta con ingredienti già pronti.
Eppure, in tanti locali e ristoranti italiani oggi si vedono sempre più semi preparati, prodotti che arrivano già parzialmente pronti, da comporre e cuocere in pochi minuti. Il gusto e la tradizione ne risentono, ma soprattutto l’autenticità della cucina viene meno.
La domanda che ci dobbiamo porre è: quanto siamo disposti a sacrificare della nostra cucina tradizionale in nome della velocità e della convenienza? Se un dolce come la torta di mele può essere preparato in modo artigianale, con ingredienti freschi e semplici, a costi contenuti e in un tempo tutto sommato breve, perché rinunciare a questo tipo di cucina?
Cuciniamo meno, ma soprattutto cuciniamo con meno passione e cura. E questo è il vero declino della ristorazione italiana. La domanda è: siamo davvero pronti a perderla?
E tu, come ti rapporti con questa “cucina veloce”? Preferisci riscoprire i metodi tradizionali o accetti la comodità dei semi preparati?
Scrivi a redazione@7giorni.info
Cesare Farina
Un esempio che ben rappresenta questa evoluzione è la torta di mele che ho preparato recentemente. Si tratta di un dolce semplice, ma che richiede comunque una buona dose di attenzione e cura. Ho deciso di prepararla in modo artigianale, a mano, utilizzando solo burro, zucchero, uova, farina, lievito e delle mele fresche. Ebbene, nonostante il lavoro “fatto a mano” e il rispetto per la tradizione, il tutto mi è costato solo 30 minuti di lavoro e un foodcost di 7,50€ per 16 persone (1,7 kg).
In un'epoca in cui la maggior parte delle torte di mele sono preparate con basi già pronte, che richiedono solo l'aggiunta di pochi ingredienti, questo approccio artigianale potrebbe sembrare “superato”. Ma è davvero così? La realtà è che, nonostante il tempo e il lavoro dedicato, i costi non sono affatto proibitivi. Questo mi fa riflettere su quanto, in realtà, la comodità dei semi preparati non giustifichi un risparmio reale in termini di qualità, gusto e economia.
La torta che ho preparato è venuta benissimo, soffice, fragrante e profumata, ma anche se la preparazione è stata relativamente rapida, è stata anche estremamente soddisfacente. Il piacere di lavorare l’impasto, di scegliere le mele giuste, di vedere il risultato finale, è un'esperienza che non può essere sostituita da una torta fatta con ingredienti già pronti.
Eppure, in tanti locali e ristoranti italiani oggi si vedono sempre più semi preparati, prodotti che arrivano già parzialmente pronti, da comporre e cuocere in pochi minuti. Il gusto e la tradizione ne risentono, ma soprattutto l’autenticità della cucina viene meno.
La domanda che ci dobbiamo porre è: quanto siamo disposti a sacrificare della nostra cucina tradizionale in nome della velocità e della convenienza? Se un dolce come la torta di mele può essere preparato in modo artigianale, con ingredienti freschi e semplici, a costi contenuti e in un tempo tutto sommato breve, perché rinunciare a questo tipo di cucina?
Cuciniamo meno, ma soprattutto cuciniamo con meno passione e cura. E questo è il vero declino della ristorazione italiana. La domanda è: siamo davvero pronti a perderla?
E tu, come ti rapporti con questa “cucina veloce”? Preferisci riscoprire i metodi tradizionali o accetti la comodità dei semi preparati?
Scrivi a redazione@7giorni.info
Cesare Farina
Tags: torta di mele
FreeMarker template error (HTML_DEBUG mode; use RETHROW in production!)
Category pentole-e-fornelli not found
----
FTL stack trace ("~" means nesting-related):
- Failed at: @get_category name=cat_name var="cate... [in template "dev.sevendaysweb.com/layouts/macro/utils.ftl" in macro "set_primary_category_color" at line 600, column 7]
- Reached through: @set_primary_category_color c [in template "dev.sevendaysweb.com/layouts/macro/content_suggested.ftl" in macro "hs_contents" at line 970, column 25]
- Reached through: @hs_contents ca, contents_preview, co... [in template "dev.sevendaysweb.com/layouts/macro/content_suggested.ftl" in macro "suggested_category_content" at line 461, column 17]
- Reached through: @suggested_category_content ca, last_... [in template "dev.sevendaysweb.com/layouts/macro/content_suggested.ftl" in macro "suggested_contents" at line 223, column 25]
- Reached through: @query name=name cache=false start=st... [in template "dev.sevendaysweb.com/layouts/macro/content_suggested.ftl" in macro "suggested_contents" at line 221, column 9]
- Reached through: @suggested_contents name=(mpName + "i... [in template "dev.sevendaysweb.com/layouts/macro/content_suggested.ftl" in macro "content_suggested" at line 81, column 41]
- Reached through: @query name="categories_area_sect" ca... [in template "dev.sevendaysweb.com/layouts/macro/content_suggested.ftl" in macro "content_suggested" at line 8, column 9]
- Reached through: @content_suggested bundle.OCDetail, "... [in template "dev.sevendaysweb.com/layouts/macro/content_details.ftl" in macro "content_details" at line 358, column 25]
- Reached through: @content var="c" show_last_content=ca... [in template "dev.sevendaysweb.com/layouts/macro/content_details.ftl" in macro "content_details" at line 118, column 9]
- Reached through: @content_details img_full_width=img_f... [in template "dev.sevendaysweb.com/layouts/default.ftl" in macro "contents_column" at line 9, column 13]
- Reached through: @contents_column [in template "dev.sevendaysweb.com/layouts/macro/skeleton.ftl" in macro "container" at line 412, column 49]
- Reached through: @query name="count_areas" cache=false... [in template "dev.sevendaysweb.com/layouts/macro/skeleton.ftl" in macro "container" at line 254, column 5]
- Reached through: @container context, "[left-mid-", "[c... [in template "dev.sevendaysweb.com/layouts/macro/skeleton.ftl" in macro "html" at line 111, column 33]
- Reached through: @cache sv=search_val [in template "dev.sevendaysweb.com/layouts/macro/skeleton.ftl" in macro "html" at line 66, column 9]
- Reached through: @html cat_layout="home" cat_title=tru... [in template "dev.sevendaysweb.com/layouts/default.ftl" at line 24, column 1]
----
Java stack trace (for programmers):
----
freemarker.template.TemplateException: [... Exception message was already printed; see it above ...]
at it.treis.utils.freemarker.BasicHeadingCategoryDirective.getCategoryByName(BasicHeadingCategoryDirective.java:63)
at it.treis.utils.freemarker.CategoryDirective.execute(CategoryDirective.java:65)
at freemarker.core.Environment.visit(Environment.java:445)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
at freemarker.core.Environment.visitIteratorBlock(Environment.java:642)
at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment$NestedElementTemplateDirectiveBody.render(Environment.java:2900)
at it.treis.utils.freemarker.CategoryCachedQueryResultDirective.execute(CategoryCachedQueryResultDirective.java:202)
at freemarker.core.Environment.visit(Environment.java:445)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
at freemarker.core.Environment.visitIteratorBlock(Environment.java:642)
at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment$NestedElementTemplateDirectiveBody.render(Environment.java:2900)
at it.treis.utils.freemarker.CategoryCachedQueryResultDirective.execute(CategoryCachedQueryResultDirective.java:202)
at freemarker.core.Environment.visit(Environment.java:445)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment$NestedElementTemplateDirectiveBody.render(Environment.java:2900)
at it.treis.utils.freemarker.ContentCachedResultDirective.render(ContentCachedResultDirective.java:201)
at it.treis.utils.freemarker.ContentCachedResultDirective.execute(ContentCachedResultDirective.java:181)
at freemarker.core.Environment.visit(Environment.java:445)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:372)
at freemarker.core.Environment$NestedElementTemplateDirectiveBody.render(Environment.java:2900)
at it.treis.utils.freemarker.CategoryCachedQueryResultDirective.execute(CategoryCachedQueryResultDirective.java:202)
at freemarker.core.Environment.visit(Environment.java:445)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.visitAndTransform(Environment.java:495)
at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment$NestedElementTemplateDirectiveBody.render(Environment.java:2900)
at it.treis.utils.freemarker.CacheDirective.execute(CacheDirective.java:102)
at freemarker.core.Environment.visit(Environment.java:445)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
at freemarker.core.Environment.visit(Environment.java:366)
at freemarker.core.Environment.invoke(Environment.java:775)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
at freemarker.core.Environment.visit(Environment.java:330)
at freemarker.core.Environment.visit(Environment.java:336)
at freemarker.core.Environment.process(Environment.java:309)
at freemarker.template.Template.process(Template.java:384)
at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:223)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:372)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)
at it.treis.smartmedia.navigation.interceptors.PrepareParametersInterceptor.intercept(PrepareParametersInterceptor.java:183)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at it.treis.smartmedia.navigation.interceptors.SubscriptionTokenMatcherInterceptor.intercept(SubscriptionTokenMatcherInterceptor.java:46)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:168)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:76)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:253)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:575)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:209)
at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:643)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:763)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1831)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:829)
Annunci gratuiti
Lavora con noi
Telegram News
Pubblicità
Redazione